Leetcode 95. Unique Binary Search Tree II

时间:2023-03-09 17:02:09
Leetcode 95. Unique Binary Search Tree II

由于BST的性质,所以右子树或者左子树中Node的值是连续的: 左子树 = [1, i -1], root = i, 右子树 = [i + 1, n]。使用一个递归函数构造这个BST。其中返回值应该是所有的Unique BST的root node。

 def generateTrees(self, n):
"""
:type n: int
:rtype: List[TreeNode]
"""
if n == 0:
return []
return self.buildTree(1, n) def buildTree(self, start, end):
result = []
if start > end:
result.append(None)
return result for i in range(start, end + 1):
leftChild = self.buildTree(start, i - 1)
rightChild = self.buildTree(i+1, end) for l in leftChild:
for r in rightChild:
node = TreeNode(i)
node.left = l
node.right = r
result.append(node) return result