首页 > 代码库 > Leetcode: Binary Tree Postorder Traversal
Leetcode: Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes‘ values.
For example:
Given binary tree {1,#,2,3}
,
1 2 / 3
return [3,2,1]
.
Note: Recursive solution is trivial, could you do it iteratively?
分析:用两个栈,一个栈A用于扩展子树,另一个B栈用于保存结果。入栈A的顺序是先左子树后右子树,从栈A出的元素被压入栈B。代码如下:
class Solution {public: vector<int> postorderTraversal(TreeNode *root) { vector<int> res; if(!root) return res; stack<TreeNode *> s; stack<TreeNode *> output; TreeNode * cur; s.push(root); while(!s.empty()){ cur = s.top(); output.push(cur); s.pop(); if(cur->left) s.push(cur->left); if(cur->right) s.push(cur->right); } while(!output.empty()){ cur = output.top(); res.push_back(cur->val); output.pop(); } return res; }};
Leetcode: Binary Tree Postorder Traversal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。