Skip to content

Commit 5c73bc5

Browse files
committed
Added 105. Construct Binary Tree from Preorder and Inorder Traversal
1 parent 5265878 commit 5c73bc5

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

leetcode/cpp/Tree/105.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
unordered_map<int, int > mp;
3+
public:
4+
TreeNode* buildTree_util(vector<int>& preorder, int pre1, int pre2 , vector<int>& inorder, int i1, int i2) {
5+
if(pre1 > pre2 || i1 > i2)
6+
return NULL;
7+
TreeNode *root = new TreeNode(preorder[pre1]);
8+
int diff = mp[preorder[pre1]] - i1;
9+
root->left = buildTree_util(preorder, pre1 + 1, pre1+diff, inorder, i1, i1+diff-1);
10+
root->right = buildTree_util(preorder, pre1 +diff+1, pre2 , inorder, i1+diff+1, i2);
11+
12+
return root;
13+
}
14+
15+
16+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
17+
int n = inorder.size();
18+
if(n == 0)
19+
return NULL;
20+
for(int i = 0; i < n; i++)
21+
mp[inorder[i]] = i;
22+
return buildTree_util(preorder, 0, n-1, inorder,0, n-1);
23+
24+
}
25+
};

0 commit comments

Comments
 (0)