Skip to content

Commit 03b2d1d

Browse files
Create 105ConstructBinaryTreefromPreorderandInorderTraversal.cpp
1 parent 8cba197 commit 03b2d1d

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
4+
int rootIdx = 0;
5+
return build(preorder, inorder, rootIdx, 0, inorder.size()-1);
6+
}
7+
8+
TreeNode* build(vector<int>& preorder, vector<int>& inorder, int& rootIdx, int left, int right) {
9+
if (left > right) return NULL;
10+
int pivot = left; // find the root from inorder
11+
while(inorder[pivot] != preorder[rootIdx]) pivot++;
12+
13+
rootIdx++;
14+
TreeNode* newNode = new TreeNode(inorder[pivot]);
15+
newNode->left = build(preorder, inorder, rootIdx, left, pivot-1);
16+
newNode->right = build(preorder, inorder, rootIdx, pivot+1, right);
17+
return newNode;
18+
}
19+
};

0 commit comments

Comments
 (0)