#include<iostream>
using namespace std;
template<class DataType>
struct element
{
BiNode<DataType> * ptr;
int flag; //这是一个标志,flag=1时表示第一次出栈,只遍历完左子树,该节点不能访问,flag=2时表示只遍历完右子树,该节点可以访问
};
//设根指针为bt
template<class DataType>
void BiTree<DataType>::PostOrder(BiNode<DataType> * bt)
{
top = -1; //采用顺序栈,并假定栈不会发生上溢
while(bt!=NULL||top!=-1) //两个条件都不成立才会退出循环
{
while(bt!=NULL)
{
top++;
s[top].ptr=bt;
s[top].flag=1; //root连同标志flag入栈
bt=bt->lchild;
}
while(top!=-1&&s[top].flag=2)
{
bt=s[top--].ptr;
cout<<bt->data;
}
if(top!=-1)
{
s[top].flag=2;
bt=s[top].ptr->rchild;
}
}
}

这段二叉树的后序非递归遍历错了,请问怎么改
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-