c语言数组转换树存储结构,c语言, 一棵具有n个结点的完全二叉树以数组存储,试写一个非递归 算法实现对 该树的前序遍历。...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

398ibxhsf

2014.06.26

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:48%    等级:9

已帮助:566人

以向量为存储结构的完全二叉树,其存储在向量中的结点其实是按层次遍历的次序存放的,可以根据课本第74页的内容设计出算法:

typedef char DataType;//设结点数据类型为char  #define M 100//设结点数不超过100  typedef DataType BinTree[M];

void Preorder(BinTree T)   { //前序遍历算法    int n=T[0];

int p[M];//设置一队列存放结点值    int i,j;

for(i=1;i<=n;i++)     {

if (i==1)//根结点        j=1;

else if(2*j<=n)//左子树          j=2*j;

else if(j%2==0&&j

else if(j>1)//双亲之右兄弟             j=j/2+1;      p[i]=T[j];//入队

printf("%c",p[i]);//打印结点值     }   }

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值