二叉树前序和后序非递归遍历
我承认我是菜鸟,这个前序看了很久才搞明白,悲剧!
//中序非递归遍历
void inorder(node *b)
{
stack<node *> Stack;
node *p = b;
while(p || !Stack.empty())
{
while(p)
{
Stack.push(p);
p = p->lchild;
}
if(!Stack.empty())
{
p = Stack.top();
cout << p->data << " ";
Stack.pop();
p = p->rchild;
}
}
}
//后序非递归遍历
void postorder(node *b)
{
stack<node *> Stack;
node *p = b;
while(p || !Stack.empty())
{
while(p)
{
Stack.push(p);
p = p->rchild;
}
if(!Stack.empty())
{
p = Stack.top();
cout << p->data << " ";
Stack.pop();
p = p->lchild;
}
}
}