主页 > 开源代码  > 

python-leetcode-不同的二叉搜索树II

python-leetcode-不同的二叉搜索树II

95. 不同的二叉搜索树 II - 力扣(LeetCode)

# 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[Optional[TreeNode]]: if n == 0: return [] return self._generate_trees(1, n) def _generate_trees(self, start, end): trees = [] # 如果区间为空,则返回 [None] 作为空树的情况 if start > end: trees.append(None) return trees # 枚举每个数字作为根节点 for i in range(start, end + 1): # 递归生成所有可能的左子树和右子树 left_trees = self._generate_trees(start, i - 1) right_trees = self._generate_trees(i + 1, end) # 将所有左子树和右子树组合起来 for left in left_trees: for right in right_trees: root = TreeNode(i) root.left = left root.right = right trees.append(root) return trees

标签:

python-leetcode-不同的二叉搜索树II由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python-leetcode-不同的二叉搜索树II