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

admin2014-12-25  43

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

选项

答案 voidCrerateB/_t(BiTree&T,int i) { /*由顺序存储结构的完全二叉树,建立其二叉链表存储结构的完全二叉树*/ if(!(T=(BiTree)malloc(sizeof(BiTNode)))==NULL) exit(OVERFLOW); T一>data=A[i]; if(2*i<=n) CreateBit(t一>ichild,2*i); elseT一>1child=NULL; if(2*i+1<=n) CreateBit(t一>rchild,2*i+1); elseT一>rchild=NULL; } 在该算法中,可以将数组A设为全局变量。

解析 遍历是二叉树各种操作的基础;可以利用遍历来建立二叉树。本题就是利用先序遍历,由顺序存储结构的完全二叉树建立起二叉链表存储结构的完全二叉树。顺序存储结构中,编号为i的结点的左孩子的编号为2i,右孩子的编号为2i+1。
转载请注明原文地址:https://jikaoti.com/ti/juLaFFFM
0

最新回复(0)