# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None
classSolution(object): defgenerateTrees(self, n): """ :type n: int :rtype: List[TreeNode] """ defhelper(l): ifnot l: return [None] eliflen(l) == 1: return [TreeNode(l[0])] ans = [] for i, n inenumerate(l): for left in helper(l[:i]): for right in helper(l[i+1:]): root = TreeNode(n) if left isnotNone: root.left = left if right isnotNone: root.right = right ans.append(root) return ans if n <= 0: return [] return helper([i for i inrange(1, n+1)])