移动公司营销网站设计,潍坊建设公司排名,应用商店免费下载,网站搭建app写代码#xff1a;定义顺序存储的二叉树#xff08;数组实现#xff0c;树的结点从数组下标1开始存储#xff09; 基于上述定义#xff0c;写一个函数 int findFather ( i ) #xff0c;返回结点 i 的父节点编号 基于上述定义#xff0c;写一个函数 int leftChild ( i… 写代码定义顺序存储的二叉树数组实现树的结点从数组下标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(i1 ||iMAX_SIZE){//TODOreturn -1;//节点不合法 }return i/2;
}
//查找i的左孩子
int findLeftChild(int i)
{int lefti*2;if(leftMAX_SIZE){//TODOreturn -1;//节点不合法 }return left;
}
//查找右孩子
int findRightChild(int i)
{int right2*i1;if(rightMAX_SIZE){//TODOreturn -1;}return right;
}
//先序遍历
void preOrderTraversal(int i)
{if(iMAX_SIZE ||i1){//TODOreturn;}printf(%d,tree[i]);//访问根节点preOrderTraversal(findLeftChild(i)) ;//递归遍历左子树preOrderTraversal(findRightChild(i));//递归遍历右子树
}
//中序遍历
void inOrderTraversal(int i)
{if(iMAX_SIZE ||i1){//TODOreturn;}inOrderTraversal(findLeftChild(i));//递归遍历左子树printf(%d,tree[i]);//访问根节点inOrderTraversal(findRightChild(i));//递归访问右子树
}
//后序遍历
void postOrderTraversal(int i)
{if(iMAX_SIZE ||i1){//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(i0){//TODOreturn -1;}return (i-1)/2;
}
int findLeftChild(Bitree t,int i)
{int left2*i1;if(leftMAX_SIZE t[left] !0){return left;}return -i;
}
int findRightChild(Bitree t,int i)
{int right 2*i2;if(rightMAX_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]);
}