问答题 已知一棵高度为k具有n个结点的二叉树,按顺序方式存储:(1)编写用先根遍历树中每个结点的非递归算法;(2)编写将树中最大序号叶子结点的祖先结点全部打印输出的算法。【东北大学1997六(20分)】
【正确答案】正确答案:高度为K的二叉树,按顺序方式存储,要占用2 k 一1个存储单元,与实际结点个数n关系不大,对不是完全二叉树的二叉树,要增加“虚结点”,使其在形态上成为完全二叉树。二叉树中最大序号的叶子结点是在顺序存储方式下编号最大的结点。核心语句段如下:while(bt[c]==0)c一一; //初值c=2 k 一1,从后向前滤去虚结点找最大序号叶子 f=c/2 ; //c的双亲结点f while(f!=0) //从结点c的双亲结点直到根结点,路径上所有结点均为祖先结点 {cout<cbt[f]);f=f/2 ;} //逆序输出,最老的祖先最后输出
【答案解析】