一棵具有n个结点的完全二叉树以一维数组作为存储结构,试设计一个对该完全二叉树进行先序遍历的算法。

admin2012-08-16  55

问题 一棵具有n个结点的完全二叉树以一维数组作为存储结构,试设计一个对该完全二叉树进行先序遍历的算法。

选项

答案这个问题可以用递归算法,也可用非递归算法,下面给出的为非递归算法。假设该完全二叉对的结点以层次为序,按照从上到下,同层从左到右顺序编号,存放在一个一维数组R[1..n]中,且用一个有足够大容量为maxlen的顺序栈作辅助存储,算法描述如下: preorder(R)//先序遍历二叉树R intR[n]; {introot; SqStack*s;//s为一个指针栈,类型为seqstack,其中包含top域和数组data S->top=-1;//s栈置空 root=l;while((root<:n)&&(s->top>-1)) {while(root<=n) {printf(R[root]); S->top++: S->data[s->top]=root; root=2*root;} if(s->top>-1)//栈非空访问,遍历右子树 {root=s->data[s->top]*2+1; s->top--;}}}

解析
转载请注明原文地址:https://kaotiyun.com/show/6kZc777K
0

最新回复(0)