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; } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步