二叉树后序遍历
Posted Blocking The Sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树后序遍历相关的知识,希望对你有一定的参考价值。
堆栈非递归实现
class Solution
public:
vector<int> result;
vector<int> postorderTraversal(TreeNode* root)
stack<TreeNode*> s;
TreeNode *p;
p=NULL;
while(root||!s.empty())
if(root)
s.push(root);
root=root->left;
else
root=s.top();
if(root->right&&root->right!=p)//左子树不为空且没有访问过
root=root->right;
else
s.pop();
//visit(root)
result.push_back(root->val);
p=root;//p更新右子树的根结点
root=NULL;//表示右子树遍历结束
return result;
;
递归实现
class Solution
public:
vector<int> result;
vector<int> postorderTraversal(TreeNode* root)
if(root)
postorderTraversal(root->left);
postorderTraversal(root->right);
//visit(root)
result.push_back(root->val);
return result;
;
以上是关于二叉树后序遍历的主要内容,如果未能解决你的问题,请参考以下文章