Skip to content

Commit 039de9a

Browse files
authored
Merge pull request larissalages#52 from TarunSingh56/master
Added 105.cpp and 106.cpp from Leetcode
2 parents 1539c1f + 5c73bc5 commit 039de9a

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-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+
};

leetcode/cpp/Tree/106.cpp

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

0 commit comments

Comments
 (0)