Skip to content

Commit eb8dc98

Browse files
authored
Create construct-binary-search-tree-from-preorder-traversal.py
1 parent 6a3bd7e commit eb8dc98

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Time: O(n)
2+
# Space: O(h)
3+
4+
# Definition for a binary tree node.
5+
class TreeNode(object):
6+
def __init__(self, x):
7+
self.val = x
8+
self.left = None
9+
self.right = None
10+
11+
12+
class Solution(object):
13+
def bstFromPreorder(self, preorder):
14+
"""
15+
:type preorder: List[int]
16+
:rtype: TreeNode
17+
"""
18+
def bstFromPreorderHelper(preorder, left, right, index):
19+
if index[0] == len(preorder) or \
20+
preorder[index[0]] < left or \
21+
preorder[index[0]] > right:
22+
return None
23+
24+
root = TreeNode(preorder[index[0]])
25+
index[0] += 1
26+
root.left = bstFromPreorderHelper(preorder, left, root.val, index)
27+
root.right = bstFromPreorderHelper(preorder, root.val, right, index)
28+
return root
29+
30+
return bstFromPreorderHelper(preorder, float("-inf"), float("inf"), [0])

0 commit comments

Comments
 (0)