使用两个栈,遇到根节点放入s2中,压到最底下,后面弹出来就是最后访问的;
新来的结点放入s1,先放左后放右,先弹出右压进去,后左。
void BinaryTree::posOrderUnrecur(BinaryNode* head)
{
stack<BinaryNode*> s1;
stack<BinaryNode*> s2;
s1.push(head);
BinaryNode* tmp;
while(!s1.empty())
{
tmp = s1.top();
s1.pop();
s2.push(tmp);
if(tmp->left!=NULL)
{
s1.push(tmp->left);
}
if(tmp->right!=NULL)
{
s1.push(tmp->right);
}
}
while(!s2.empty())
{
tmp = s2.top();
s2.pop();
cout<<tmp->value<<" ";
}
return;
}
网友评论