```# 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:
greater=[]
smaller=[]
if not preorder:
return 0
root_val=preorder[0]
for i in range(1,len(preorder)):
if preorder[i]<root_val:
smaller.append(preorder[i])
else:
greater.append(preorder[i])
root=TreeNode()
root.val=root_val
root.left=self.bstFromPreorder(smaller)
root.right=self.bstFromPreorder(greater)
return root