# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def generateTrees(self, n: int) -> List[TreeNode]:
if not n:
return []
def helper(mn,mx):
if mn>mx:
return [None]
if mn == mx:
return [TreeNode(mn)]
res = []
for i in range(mn,mx+1):
for l in helper(mn,i-1):
for r in helper(i+1,mx):
root = TreeNode(i)
root.left,root.right = l,r
res.append(root)
return res
return helper(1,n)