Skip to content

Commit c537330

Browse files
committed
1008. Construct Binary Search Tree from Preorder Traversal
1 parent 9abfd47 commit c537330

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Runtime: 4 ms
2+
// Memory Usage: 11.1 MB
3+
class Solution {
4+
public:
5+
6+
TreeNode* solve(vector<int>& preorder, int lo, int hi) {
7+
if (hi < lo) return NULL;
8+
9+
TreeNode* root = new TreeNode(preorder[lo]);
10+
int mid = lo + 1;
11+
12+
while (mid < preorder.size() && preorder[mid] < root->val)
13+
mid++;
14+
15+
mid--;
16+
root->left = solve(preorder, lo + 1, mid);
17+
root->right = solve(preorder, mid + 1, hi);
18+
return root;
19+
}
20+
21+
TreeNode* bstFromPreorder(vector<int>& preorder) {
22+
return solve(preorder, 0, preorder.size() - 1);
23+
}
24+
};

0 commit comments

Comments
 (0)