题目:
有一颗顺序存储的二叉树,编写代码打印出第i个节点的双亲和所有孩子的数据:
思路:
因为二叉树为顺序存储,所以直到第k个节点的孩子为2k,2k+1,其父亲节点为[k/2](向下取整)
void print_child(int Tree,int k,int n){
if(k>n)return;
else{
int i=2k;
printf(" %d, ",Tree[k]);
print_child(Tree,i);
print_child(Tree,i+1);
}
}
int main(){
int T[maxSize],n;
initTree(T,n);//初始化树,即给数组赋值,此处非重点
int i;
scanf("%d",&i);//输入目标节点
if(i==1)printf("无父节点\n");
else printf("双亲节点为:\n%d \n",T[i/2]);
printf("孩子节点为:\n");
print_child(T,2i,n);
print_child(T,2i+1,n);
return 0;
}