Skip to content

Commit 82e3e17

Browse files
authored
Create 105. Construct Binary Tree from Preorder and Inorder Traversal
1 parent bc6b9bb commit 82e3e17

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* makeTree(vector<int>&pre, vector<int>&in, int &index, int s , int e)
15+
{
16+
if(index==pre.size() || s > e)
17+
{
18+
return NULL;
19+
}
20+
21+
int mid;
22+
23+
for(int i = s; i<=e; i++)
24+
{
25+
if(in[i] == pre[index])
26+
{
27+
mid = i;
28+
break;
29+
}
30+
}
31+
32+
//creating node
33+
TreeNode* temp = new TreeNode(pre[index++]);
34+
35+
36+
temp -> left = makeTree(pre, in, index, s, mid -1);
37+
38+
temp -> right = makeTree(pre,in, index, mid +1, e);
39+
40+
return temp;
41+
}
42+
43+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
44+
//to traverse preorder vector
45+
int i = 0;
46+
47+
return makeTree(preorder, inorder, i, 0, preorder.size()-1);
48+
}
49+
};

0 commit comments

Comments
 (0)