二叉树的顺序存储和基本操作实现

news/2024/9/21 4:34:56/

写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储) 
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号 
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号 
利用上述三个函数,实现先/中/后序遍历 
写代码:定义顺序存储的二叉树(数组实现,树的结点从数组下标0开始存储) 
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号 
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号 
利用上述三个函数,实现先/中/后序遍历

 1.定义顺序存储的二叉树(数组实现,树的结点从数组下标1开始存储)

 
基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号 
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号 
利用上述三个函数,实现先/中/后序遍历 

#include <stdio.h>#define MAX_SIZE 100
int tree[MAX_SIZE];
//查找父节点
int findFather(int i)
{if(i<=1 ||i>=MAX_SIZE){//TODOreturn -1;//节点不合法 }return i/2; 
} 
//查找i的左孩子
int findLeftChild(int i)
{int left=i*2;if(left>=MAX_SIZE){//TODOreturn -1;//节点不合法 }return left; 
} 
//查找右孩子
int findRightChild(int i)
{int right=2*i+1;if(right>=MAX_SIZE){//TODOreturn -1;}return right;
} 
//先序遍历
void preOrderTraversal(int i)
{if(i>=MAX_SIZE ||i>1){//TODOreturn;}printf("%d",tree[i]);//访问根节点preOrderTraversal(findLeftChild(i)) ;//递归遍历左子树preOrderTraversal(findRightChild(i));//递归遍历右子树 
} 
//中序遍历
void inOrderTraversal(int i)
{if(i>=MAX_SIZE ||i<1){//TODOreturn;}inOrderTraversal(findLeftChild(i));//递归遍历左子树printf("%d",tree[i]);//访问根节点inOrderTraversal(findRightChild(i));//递归访问右子树 
} 
//后序遍历
void postOrderTraversal(int i)
{if(i>=MAX_SIZE ||i<1){//TODOreturn;}postOrderTraversal(findLeftChild(i));//递归遍历左子树postOrderTraversal(findRightChild(i));//递归遍历右子树printf("%d",tree[i]);//访问根节点 
}

2.定义顺序存储的二叉树(数组实现,树的结点从数组下标0开始存储) 

基于上述定义,写一个函数 int findFather ( i ) ,返回结点 i 的父节点编号 
基于上述定义,写一个函数 int leftChild ( i ) ,返回结点 i 的左孩子编号 
基于上述定义,写一个函数 int rightChild ( i ) ,返回结点 i 的右孩子编号 
利用上述三个函数,实现先/中/后序遍历 

#include <stdio.h>#define MAX_SIZE 100
typedef int ElemType;
typedef ElemType Bitree[MAX_SIZE];int findFather (int i)
{if(i==0){//TODOreturn -1;}return (i-1)/2;
} 
int findLeftChild(Bitree t,int i)
{int left=2*i+1;if(left<MAX_SIZE &&t[left] !=0){return left;}return -i;
}
int findRightChild(Bitree t,int i)
{int right =2*i+2;if(right<MAX_SIZE && t[right]) {//TODOreturn right;}return -1;
}
void preOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}printf("%d",t[i]);preOrder(t,findLeftChild(t,i));preOrder(t,findRightChild(t,i));
}
void inOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}inOrder(t,findLeftChild(t,i));printf("%d",t[i]);inOrder(t,findRightChild(t,i));
}void postOrder(Bitree t,int i)
{if(i==-1){//TODOreturn;}postOrder(t,findLeftChild(t,i));postOrder(t,findRightChild(t,i));printf("%d",t[i]);
}


http://www.ppmy.cn/news/1528234.html

相关文章

怎样把PPT上顽固的图标删了

例如&#xff1a; 解决&#xff1a; 首先打开下载好的PPT模板&#xff0c;然后在视图选项卡里面找到幻灯片母版。 进入幻灯片母版后&#xff0c;找到第一页母版页就会看到LOGO了&#xff0c;这时使用鼠标就可以选中删除啦。

前端发布 CDN缓存

公司给服务器加了CDN&#xff0c;导致有时前端代码上传打包后&#xff0c;正式环境页面效果却不更新。每次都需要去找运维刷CDN…让我彻底记住了CDN缓存 CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;是一种广泛使用的互联网技术&#xff0c;…

修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118

修改 HTTP 和 HTTPS 代理设置为 http://127.0.0.1:8118 要将当前的 HTTP 和 HTTPS 代理从 http://127.0.0.1:1080 修改为 http://127.0.0.1:8118&#xff0c;可以按照以下步骤操作&#xff1a; 1. 临时修改代理设置 如果只希望在当前终端会话中临时修改代理设置&#xff0c;…

react-native连接android原生模块

目录 搭建react-native项目 搭建node和jdk的环境 搭建Android的环境 创建React-native项目 运行react-native项目 下载夜神模拟器 使用adb连接夜神浏览器。 运行react-native项目 编写原生安卓的apk android studio中编写原生代码 在React-native编写代码。 搭建rea…

无人机飞行时状态详解!!!

飞行姿态 无人机的飞行姿态主要涉及其在空中的空间位置和方向&#xff0c;通过控制横滚、俯仰和偏航来实现。 横滚&#xff1a;无人机绕其前后轴&#xff08;通常是X轴&#xff09;的旋转运动&#xff0c;表现为左右倾斜。当无人机的左翼低于右翼或右翼低于左翼时&#xff0c…

docker挂载宿主机文件run命令启动报错

背景 使用docker安装mysql8,docker run 命令提示报错 命令: docker run -d \ -p 3306:3306 \ -v ~/docker/mysql8/log/mysqld.log:/var/log/mysqld.log \ -e MYSQL_ROOT_PASSWORD=123456 \ --name mysql8 mysql:8.0.36 报错信息 docker: Error response from daemon: fai…

Spring Boot校园管理系统:技术选型与架构设计

第2章相关技术 2.1 B/S架构 B/S结构的特点也非常多&#xff0c;例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量&#xff0c;通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量&#xff0c;这些功能的操作主要是由服务器来进行控制的…

网站后缀名学习

目的 学习并记录一些常见的网站后缀名 常见网站后缀名 1、com commercial翻译为商业的。 最常见的域名后缀&#xff0c;全世界范围使用最多的域名&#xff0c;原用于商业组织&#xff0c;现在个人也能注册。 2、net network翻译为网络&#xff0c;更多是专业技术类的网址…