题目
Given an integer n, return all the structurally unique BST’s (binary search trees), which has exactly n nodes of unique values from 1 to n. Return the answer in any order.
解题思路
枚举每个数当根,对左右两边的数递归简历子树
代码
class Solution:
def generateTrees(self, n: int) -> List[TreeNode]:
def gen(l, r):
ret = []
if l > r:
return [None]
for i in range(l, r + 1):
left = gen(l, i - 1)
right = gen(i + 1, r)
for lnode in left:
for rnode in right:
root = TreeNode(i)
root.left = lnode
root.right = rnode
ret.append(root)
return ret
return gen(1, n)