为了能到远方,脚下的每一步都不能|

ericf

园龄:2年4个月粉丝:0关注:2

二叉树的三种非递归遍历

// 先序遍历(非递归)
void PreOrder(BiTree T) {
LinkStack S;
InitStack(S);
BiTree p = T;
while(p || !IsEmpty(S)) {
if(p) {
visit(p);
Push(S, p);
p = p->lchild;
} else {
Pop(S, p);
p = p->rchild;
}
}
}
// 中序遍历(非递归)
void InOrder(BiTree T) {
LinkStack S;
InitStack(S);
BiTree p = T;
while(p || !IsEmpty(S)) {
if(p) {
Push(S, p);
p = p->lchild;
} else {
Pop(S, p);
visit(p);
p = p->rchild;
}
}
}
// 后序遍历(非递归)
void PostOrder(BiTree T) {
LinkStack S;
InitStack(S);
BiTree p = T;
BiTree r = NULL;
while(p || !IsEmpty(S)) {
if(p) {
Push(S, p);
p = p->lchild;
} else {
GetTop(S, p);
if(p->rchild && p->rchild != r) {
p = p->rchild;
} else {
Pop(S, p);
visit(p);
r = p;
p = NULL;
}
}
}
}

本文作者:ericf

本文链接:https://www.cnblogs.com/ericf/p/18473662

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ericf  阅读(6)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起