1 class Solution: 2 def __init__(self): 3 self.root = None 4 5 def construct(self,order,root,i): 6 if i==len(order): 7 return None 8 else: 9 if self.root==None: 10 self.root = TreeNode(order[i]) 11 self.construct(order,self.root,i+1) 12 else: 13 if order[i]<root.val: 14 if root.left==None: 15 root.left = TreeNode(order[i]) 16 self.construct(order,self.root,i+1) 17 else: 18 self.construct(order,root.left,i) 19 else: 20 if root.right==None: 21 root.right = TreeNode(order[i]) 22 self.construct(order,self.root,i+1) 23 else: 24 self.construct(order,root.right,i) 25 26 def bstFromPreorder(self, preorder: 'List[int]') -> 'TreeNode': 27 self.construct(preorder,self.root,0) 28 return self.root
比较简单的题目,递归方式构造二叉搜索树。