2
* Definition for a binary tree node.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),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);22
TreeNode *bstFromPreorder(vector<int> &preorder) {24
return help(i, preorder, INT_MAX);