classTreeNode:def__init__(self, x):
self.val = x
self.left =None
self.right =NoneclassSolution:defgenerateTrees(self, n:int)-> List[TreeNode]:if n ==0:return[]else:return self.generate_select(1, n)defgenerate_select(self, left, right):
result =[]if left > right:
result.append(None)for i inrange(left, right +1):
l_trees = self.generate_select(left, i -1)
r_trees = self.generate_select(i +1, right)for l in l_trees:for r in r_trees:
root = TreeNode(i)
root.left = l
root.right = r
result.append(root)return result