二叉树先序遍历 递归 非递归
Posted brainstorm-yc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树先序遍历 递归 非递归相关的知识,希望对你有一定的参考价值。
先序遍历的操作如下:
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; //遍历左子树
}
}
}
以上是关于二叉树先序遍历 递归 非递归的主要内容,如果未能解决你的问题,请参考以下文章