[求助]二叉树的后序非递归遍历
我在编写程序的时候发现二叉树的后序遍历出现错误,可是我又不知道哪里有错,只是提示:1,left of '.ptr' must have class/struct/union type
2,left of '.flag' must have class/struct/union type
可是我头文件中有定义flag和ptr
不知道怎么回事,还望高手调试,我有附带源码
template<class T>
struct BiNode
{
T data;
BiNode<T>* lchild,* rchild,* ptr;
int flag;
};
template<class T>
void BiTree<T>::PostOrder(BiNode<T> * root)
{
int top=-1;
BiNode<T> * s[100];
while(root!=NULL||top!=-1)
{
while(root!=NULL)
{
top++;
s[top].ptr=root;
s[top].flag=1;
root=root->lchild;
}
while(top!=-1&&s[top].flag==2)
{
root=s[top--].ptr;
cout<<root->data;
}
if(top!=-1){
s[top].flag=2;
root=s[top].ptr->rchild;
}
}
}