Skip to content

Instantly share code, notes, and snippets.

@iamprayush
Created September 18, 2020 09:49
Show Gist options
  • Save iamprayush/baa2bf4aab766cc6d660643c1787b78f to your computer and use it in GitHub Desktop.
Save iamprayush/baa2bf4aab766cc6d660643c1787b78f to your computer and use it in GitHub Desktop.
Construct Binary Search Tree from Preorder Traversal
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def bstFromPreorder(self, preorder: List[int]) -> TreeNode:
root = TreeNode(preorder[0])
def insert(val):
curr = root
while True:
if val < curr.val:
# Insert into left subtree.
if curr.left is None:
curr.left = TreeNode(val)
break
else:
curr = curr.left
else:
# Insert into right subtree.
if curr.right is None:
curr.right = TreeNode(val)
break
else:
curr = curr.right
for val in preorder[1:]:
insert(val)
return root
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment