[LeetCode] Construct Binary Tree from Inorder and Postorder Traversal
2013-11-20 09:09
459 查看
Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
问题描述:给定一个二叉树的中序遍历和后序遍历序列,构建这个二叉树。
同前面的从先序和中序构建二叉树类似。
class Solution {
public:
typedef vector<int>::iterator bt_iter;
TreeNode *build(bt_iter in_beg, bt_iter in_end, bt_iter post_beg, bt_iter post_end)
{
if(in_beg == in_end)
return NULL;
int root_val = *(post_end-1);
bt_iter rt_it = find(in_beg, in_end, root_val);
bt_iter left_end = post_beg + (rt_it - in_beg);
TreeNode *child_root = new TreeNode(root_val);
child_root->left = build(in_beg, rt_it, post_beg, left_end);
child_root->right = build(rt_it + 1, in_end, left_end, post_end - 1);
return child_root;
}
TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
return build(inorder.begin(), inorder.end(), postorder.begin(), postorder.end());
}
};
Note:
You may assume that duplicates do not exist in the tree.
问题描述:给定一个二叉树的中序遍历和后序遍历序列,构建这个二叉树。
同前面的从先序和中序构建二叉树类似。
class Solution {
public:
typedef vector<int>::iterator bt_iter;
TreeNode *build(bt_iter in_beg, bt_iter in_end, bt_iter post_beg, bt_iter post_end)
{
if(in_beg == in_end)
return NULL;
int root_val = *(post_end-1);
bt_iter rt_it = find(in_beg, in_end, root_val);
bt_iter left_end = post_beg + (rt_it - in_beg);
TreeNode *child_root = new TreeNode(root_val);
child_root->left = build(in_beg, rt_it, post_beg, left_end);
child_root->right = build(rt_it + 1, in_end, left_end, post_end - 1);
return child_root;
}
TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
return build(inorder.begin(), inorder.end(), postorder.begin(), postorder.end());
}
};
相关文章推荐
- Leetcode 随笔之 ------ Construct Binary Tree from Inorder and Postorder Traversal
- [Leetcode][python]Construct Binary Tree from Preorder and Inorder Traversal (Inorder and Postorder)
- leetcode106. 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
- LeetCode106:Construct Binary Tree from Inorder and Postorder Traversal
- LeetCode 106: Construct Binary Tree from Inorder and Postorder Traversal
- <LeetCode OJ> 106. 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-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 (利用中序和后序遍历构建二叉树) -- medium
- [JAVA]LeetCode106 Construct Binary Tree from Inorder and Postorder Traversal
- [C++]LeetCode: 38 Construct Binary Tree from Inorder and Postorder Traversal
- leetcode-Construct Binary Tree from Inorder and Postorder Traversal
- 【Leetcode】【Medium】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 - 106 - Construct Binary Tree from Inorder and Postorder Traversal