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