- 先序遍历非递归算法
Status PreOrderTraverse1(BiTree T) {
// 先序遍历二叉树T的非递归算法.
SqStack S;
BiTree p;
InitStack(S); p = T;
while (p || !StackEmpty(S))
{
if (p)
{
Push(S, p);
cout << p->data<<" ";
p = p->lchild;
} // 向左走到尽头
else
{
Pop(S, p);
p = p->rchild;
}
}
return OK;
}
- 非递归中序遍历算法
Status PreOrderTraverse1(BiTree T) {
// 先序遍历二叉树T的非递归算法.
SqStack S;
BiTree p;
InitStack(S); p = T;
while (p || !StackEmpty(S))
{
if (p)
{
Push(S, p);
cout << p->data<<" ";
p = p->lchild;
} // 向左走到尽头
else
{
Pop(S, p);
p = p->rchild;
}
}
return OK;
}
示例二叉树: