A-A+

具有n个结点的完全二叉树 顺序存储在一维数组A[1… z]中 设计算法将A中顺序存储变为二叉

2022-08-12 15:55:51 问答库 阅读 196 次

问题详情

具有n个结点的完全二叉树,顺序存储在一维数组A[1…,z]中,设计算法将A中顺序存储变为二叉链表存储的二叉树。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:voidCrerateB/_t(BiTree&Tint i){ /*由顺序存储结构的完全二叉树建立其二叉链表存储结构的完全二叉树*/if(!(T=(BiTree)malloc(sizeof(BiTNode)))==NULL)exit(OVERFLOW);T一>data=A[i];if(2*i<=n)CreateBit(t一>ichild2*i);elseT一>1child=NULL;if(2*i+1<=n)CreateBit(t一>rchild2*i+1);elseT一>rchild=NULL;}在该算法中可以将数组A设为全局变量。
遍历是二叉树各种操作的基础;可以利用遍历来建立二叉树。本题就是利用先序遍历,由顺序存储结构的完全二叉树建立起二叉链表存储结构的完全二叉树。顺序存储结构中,编号为i的结点的左孩子的编号为2i,右孩子的编号为2i+1。

考点:顺序,结点