[leetcode][tree] Binary Tree Postorder Traversal
2015-05-22 19:59
197 查看
题目:
Given a binary tree, return the postorder traversal of its nodes' values.
For example:
Given binary tree
return
Note: Recursive solution is trivial, could you do it iteratively?
递归实现:
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?
递归实现:
/** * Definition for a binary tree node. * 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; postorderTraversalCore(root, res); return res; } private: void postorderTraversalCore(TreeNode *root, vector<int> &res){ if (NULL == root) return; postorderTraversalCore(root->left, res); postorderTraversalCore(root->right, res); res.push_back(root->val); } };非递归实现:
vector<int> postorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode *> sta; TreeNode *p = root;//用于遍历 TreeNode *pre = NULL;//指向上一次遍历的节点 while (p || !sta.empty()){ while (p){//一直向左 sta.push(p); p = p->left; } p = sta.top(); if (NULL == p->right || p->right == pre){//该节点没有右子树或者它的右子树已经遍历完毕 res.push_back(p->val);//访问节点 sta.pop();//节点出栈 pre = p;//更新pre p = NULL; } else p = p->right;//右子树还没遍历,现在开始遍历右子树 } return res; }
相关文章推荐
- leetcode - Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode]Construct Binary Tree from Inorder and Postorder Traversal
- Java for LeetCode 145 Binary Tree Postorder Traversal
- [LeetCode 145] Binary Tree Postorder Traversal
- [LeetCode]109. Construct Binary Tree from Inorder and Postorder Traversal由中序序列和后序序列重建二叉树
- LeetCode题目详解——Binary Tree Postorder Traversal
- LeetCode Binary Tree Postorder Traversal 二叉树后序遍历 递归和非递归解法
- [LeetCode][Java] Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode 之Binary Tree Postorder Traversal(45)
- LeetCode-Binary Tree Postorder Traversal
- leetcode 110: Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode] Binary Tree Postorder Traversal
- [Leetcode 106, Medium] Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode - Construct Binary Tree from Inorder and Postorder Traversal
- Leetcode: Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal
- leetcode[145]Binary Tree Postorder Traversal
- Leetcode dfs Binary Tree Postorder Traversal
- leetCode:Binary Tree Postorder Traversal,Binary Tree Preorder Traversal--JAVA version
- [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal