首页 > 代码库 > leetcode - [6]Binary Tree Postorder Traversal
leetcode - [6]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]
.
思路:后序遍历是按照“左子树,右子树,根”的顺序访问元素。那么根或者其它父亲元素就要先压入栈,然后再弹出。
#include <iostream>#include <algorithm>#include <vector>#include <stack>using namespace std;struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x), left(NULL), right(NULL){}}; class Solution {public: vector<int> postorderTraversal(TreeNode *root) { vector<int> res; stack<TreeNode *> s; if (!root) { return res; } s.push(root); while (!s.empty()) { TreeNode *p = s.top(); s.pop(); res.push_back(p->val); if (p->right) { s.push(p->right); } if (p->left) { s.push(p->left); } } reverse(res.begin(), res.end()); return res; }};int main(int argc, char *argv[]) { TreeNode *p = new TreeNode(9); p->right = new TreeNode(1); p->left = new TreeNode(1); Solution *solution = new Solution(); vector<int> res; res = solution->postorderTraversal(p); vector<int>::iterator it; for (it = res.begin(); it != res.end(); it++) { cout << *it << endl; }}
leetcode - [6]Binary Tree Postorder Traversal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。