代码思路:利用递归思想,遍历1到n的数字i作为根节点,i左侧的点为该树的左节点,右侧的点为右节点,递归得到所有左子树和右子树后将结果输出
# 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]:
def generateTree(start,end):
if start>end:
return [None,]
all_trees=[]
for i in range(start, end + 1): # pick up a root
leftTrees=generateTree(start,i-1)
rightTrees=generateTree(i+1,end)
for l in leftTrees:
for r in rightTrees:
current_tree = TreeNode(i)
current_tree.left = l
current_tree.right = r
all_trees.append(current_tree)
return all_trees
return generateTree(1, n) if n else []