本文主要是介绍利用顺序存储(数组)存储一棵完全二叉树,输出第i个数据元素的双亲和孩子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
核心代码
if(temp==-1)printf("无结点\n");else if(temp==1)printf("无双亲\n");elseprintf("编号为%d为双亲\n",temp/2);if(2*temp>l)printf("无左孩子\n");else if(2*temp<=l)printf("左孩子为:%d\n",a[2*temp]);if((2*temp+1)>l)printf("无右孩子\n");else if((2*temp+1)<=l)printf("右孩子为:%d\n",a[2*temp+1]);elseprintf("wrong");
根据完全二叉树的定义
所有代码
#include<stdio.h>
#define MAX 10
int main()
{int a[MAX]={-1};int i=0;int temp; //节点编号int l=0;do{i++;printf("请输入第%d个结点的值,若无为-1:",i);scanf("%d",&a[i]);}while(a[i]!=-1); //输入二叉树for(i=1;a[i]!=-1;i++){printf("第%d个节点值为:%d\n",i,a[i]); l=i;}//输出二叉树,并统计个数printf("length:%d\n",l); //输出二叉树节点个数printf("请输入要查找节点编号:");scanf("%d",&temp);if(temp==-1)printf("无结点\n");else if(temp==1)printf("无双亲\n");elseprintf("编号为%d为双亲\n",temp/2);if(2*temp>l)printf("无左孩子\n");else if(2*temp<=l)printf("左孩子为:%d\n",a[2*temp]);if((2*temp+1)>l)printf("无右孩子\n");else if((2*temp+1)<=l)printf("右孩子为:%d\n",a[2*temp+1]);elseprintf("wrong");
}
看完点赞!!!
这篇关于利用顺序存储(数组)存储一棵完全二叉树,输出第i个数据元素的双亲和孩子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!