用栈实现二叉树的后序遍历
题目:用栈实现二叉树的后序遍历
//用两个栈,一个是辅助栈,一个用来存储结果
void postOrder(TreeNode *root)
{
stack<TreeNode*> helper;
stack<TreeNode*> output;
if(root == NULL) return;
while(root || !helper.empty())
{
if(root)
{
helper.push(root);
output.push(root);
root = root->right;
}else{
root = helper.top();
helper.pop();
root = root->left;
}
}
//弹栈output即可.
while(!output.empty())
{
TreeNode *node = output.top();
output.pop();
visit(node);
}
}