您的位置:首页 > 其它

Leetcode 树 Binary Tree Postorder Traversal

2014-05-13 16:58 375 查看
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie


Binary Tree Postorder Traversal

 Total Accepted: 16114 Total
Submissions: 52670

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?

题意:后序遍历

思路:采用递归实现。因为函数声明是返回一个vector<int>,所以每个子树返回的是该子树的后序遍历的结果

按照 左、右、根的次序把根和左右子树的vector合并起来就可以了

复杂度:时间O(n),空间O(n)

相关题目:

Binary Tree Inorder Traversal

Binary Tree Preorder Traversal

/**
* Definition for binary tree
* 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> post;
if(root == NULL) return post;
TreeNode *left = root->left;
TreeNode *right = root->right;

if(left) {
vector<int> left_vector = postorderTraversal(left);
post.insert(post.end(), left_vector.begin(), left_vector.end());
}
if(right){
vector<int> right_vector = postorderTraversal(right);
post.insert(post.end(), right_vector.begin(), right_vector.end());
}
post.push_back(root->val);

return post;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: