可以借助栈,将二叉树的递归遍历算法的转换为非递归算法。
中序遍历的非递归算法如下:
Void InOrder2(BiTree T){
//二叉树中序遍历的非递归算法,算法需要借助一个栈
InitStack(S); BiTree p=T;//初始化栈;p是遍历指针
While(p||!isEmpty(S)){
If§{
Push(S,p); //入栈
P=p->child; //遍历左子树
}
Else{
Pop(S,p);visit§; //出栈,访问结点值
P=p->rchild; //遍历右子树
}}}
10-23
11-17
927