File tree 1 file changed +46
-0
lines changed 1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ /* *
2
+ * Definition for a binary tree node.
3
+ * struct TreeNode {
4
+ * int val;
5
+ * TreeNode *left;
6
+ * TreeNode *right;
7
+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8
+ * };
9
+ */
10
+ class Solution {
11
+ public:
12
+ TreeNode* bstFromPreorder (vector<int >& preorder) {
13
+ int n = preorder.size ();
14
+ TreeNode *root = NULL ;
15
+ for (int i = 0 ; i < n; i++){
16
+ TreeNode *temp, *newNode;
17
+ temp = root;
18
+ newNode = new TreeNode;
19
+ newNode->left = NULL ;
20
+ newNode->val = preorder[i];
21
+ newNode->right = NULL ;
22
+ if (root==NULL ){
23
+ root=newNode;
24
+ }else {
25
+ while (1 ){
26
+ if (preorder[i]>temp->val ){
27
+ if (temp->right !=NULL ){
28
+ temp = temp->right ;
29
+ }else {
30
+ temp->right = newNode;
31
+ break ;
32
+ }
33
+ }else {
34
+ if (temp->left !=NULL ){
35
+ temp = temp->left ;
36
+ }else {
37
+ temp->left =newNode;
38
+ break ;
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return root;
45
+ }
46
+ };
You can’t perform that action at this time.
0 commit comments