class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def bstFromPreorder(self, preorder: List[int]) -> Optional[TreeNode]:
def putIntoTree(root, val):
node = root
new_node = TreeNode(val)
while True:
if node.left and node.val > val:
node = node.left
elif node.right:
node = node.right
else:
break
if node.val > val:
node.left = new_node
else:
node.right = new_node
if not preorder:
return None
root = TreeNode(preorder[0])
for i in preorder[1:]:
putIntoTree(root, i)
return root