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

大学 顺序,结点,数组 已帮助 人

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

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

热搜:二叉树的高度是10,叶子结点最多有多少

答案解析

难度★★☆ 搜索
  • 正确答案: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。