Given an integer n, return all the structurally unique **BST’**s (binary search trees), which has exactlynnodes of unique values from1ton. Return the answer in any order.
classSolution:
defgenerateTrees(self, n: int) -> List[Optional[TreeNode]]:
if n ==0:
return []
return self.generate_trees(1, n)
defgenerate_trees(self, start: int, end: int) -> List[Optional[TreeNode]]:
if start > end:
return [None]
ans: List[Optional[TreeNode]] = []
for i in range(start, end +1):
left_trees = self.generate_trees(start, i -1)
right_trees = self.generate_trees(i +1, end)
for left in left_trees:
for right in right_trees:
root = TreeNode(i)
root.left = left
root.right = right
ans.append(root)
return ans