风吹夏天 2019-10-29
中序遍历的操作如下:
1)中序遍历左子树;
2)访问根节点;
3)中序遍历右子树;
对应的递归算法如下:
void InOrder(Bitree T) { if (T != NULL) { InOrder(T->lchild); visit(T); InOrder(T->rchild); } }
对应的非递归算法如下:
void InOrder2(Bitree T) { //借助栈实现 InitStack(S); Bitree p = T; //初始化栈,p是遍历指针 while (p || !IsEmpty(S)) { if (p) { Push(S, p); p = p->lchild; //中序遍历左子树 } else { Pop(S, p); visit(p); //访问根节点 p = p->rchild; //中序遍历右子树 } } }