# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def generateTrees(self, n: int) -> List[TreeNode]:
# 回溯法
if n == 0:
return []
def generateTree(start,end):
if start > end:
return [None,]
allTrees = []
# 枚举所有可行根节点
for i in range(start,end+1):
# 获得所有可行的左子树集合
leftTrees = generateTree(start,i-1)
# 获得所有可行的右子树集合
rightTrees = generateTree(i+1,end)
# 从左子树集合中选出一棵左子树,从右子树集合中选出一棵右子树,拼接到根节点上
for l in leftTrees:
for r in rightTrees:
root = TreeNode(i)
root.left = l
root.right = r
allTrees.append(root)
return allTrees
return generateTree(1,n)
每日一道Leetcode -95. 不同的二叉搜索树 II 【回溯】
最新推荐文章于 2023-11-02 11:03:32 发布