Skip to content

Commit 1a8007f

Browse files
committed
BSTFromPreorder Traversal
1 parent d986155 commit 1a8007f

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

Trees/BSTFromPreorderTraversal.cpp

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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+
};

0 commit comments

Comments
 (0)