Skip to content

Commit fa8050a

Browse files
authored
Merge pull request kothariji#515 from iamscoobydoo/master
(Leetcode)1008.Construct BST from Preorder
2 parents 99fd988 + 1844f3c commit fa8050a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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* util(vector<int>& preorder, int* preIndex, int key, int min, int max, int size){
15+
if(*preIndex >= size)
16+
return NULL;
17+
TreeNode* root = NULL;
18+
if (key > min && key < max) {
19+
root = new TreeNode(key);
20+
*preIndex = *preIndex + 1;
21+
if (*preIndex < size) {
22+
root->left = util(preorder, preIndex, preorder[*preIndex], min, key, size);
23+
}
24+
if (*preIndex < size) {
25+
root->right = util(preorder, preIndex, preorder[*preIndex], key, max, size);
26+
}
27+
}
28+
return root;
29+
}
30+
31+
TreeNode* bstFromPreorder(vector<int>& preorder) {
32+
int preIndex = 0;
33+
return util(preorder, &preIndex, preorder[0], INT_MIN, INT_MAX, preorder.size());
34+
}
35+
};

0 commit comments

Comments
 (0)