Construct Binary Search Tree from Preorder Traversal LeetCode solution in C++

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),
10
* right(right) {}
11
* };
12
*/
13
class Solution {
14
public:
15
TreeNode *help(int &i, vector<int> &preorder, int bound) {
16
if (i == preorder.size() || preorder[i] > bound) return NULL;
17
TreeNode *root = new TreeNode(preorder[i++]);
18
root->left = help(i, preorder, root->val);
19
root->right = help(i, preorder, bound);
20
return root;
21
}
22
TreeNode *bstFromPreorder(vector<int> &preorder) {
23
int i = 0;
24
return help(i, preorder, INT_MAX);
25
}
26
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0