news 2026/5/11 17:47:37

LeetCode 不同的二叉搜索树II题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 不同的二叉搜索树II题解

LeetCode 不同的二叉搜索树II题解

题目描述

给定一个整数 n,生成所有由 1...n 为节点所组成的二叉搜索树。

示例

输入:n = 3
输出:[[1,null,3,null,2],[3,2,null,1,null,3,null,2],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]

解题思路

方法:分治

思路

  • 使用分治思想生成所有二叉搜索树。
  • 对于每个根节点,递归生成左子树和右子树。
  • 组合所有可能的左子树和右子树。

复杂度分析

  • 时间复杂度:O(Catalan(n))。
  • 空间复杂度:O(n)。

代码实现

class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def generate_trees(n): def helper(start, end): if start > end: return [None] all_trees = [] for i in range(start, end + 1): left_trees = helper(start, i - 1) right_trees = helper(i + 1, end) for left in left_trees: for right in right_trees: root = TreeNode(i) root.left = left root.right = right all_trees.append(root) return all_trees return helper(1, n) if n else [] # 测试 def test_generate_trees(): n = 3 trees = generate_trees(n) print(len(trees)) # 输出:5 if __name__ == "__main__": test_generate_trees()

总结

不同的二叉搜索树II是分治思想的典型应用,递归生成所有可能的二叉搜索树。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 17:45:43

BigCodeBench实战指南:从零评估大模型真实代码生成能力

1. 从HumanEval到BigCodeBench:为什么我们需要一个更“真实”的代码生成基准? 如果你关注大语言模型(LLM)在代码生成领域的发展,HumanEval、MBPP这些名字你一定不陌生。它们就像编程界的“高考真题”,让无数…

作者头像 李华
网站建设 2026/5/11 17:45:42

成都企业如何控制大模型部署成本?本地化部署不是越大越好

一、成都企业做大模型本地化部署,成本最容易被低估很多企业第一次评估大模型私有化部署时,预算表通常从服务器、显卡、存储、模型授权和部署服务开始。这些成本当然重要,但它们只构成项目的可见部分。真正决定 AI 项目是否可持续的&#xff0…

作者头像 李华
网站建设 2026/5/11 17:37:42

Linux命令行交互式学习环境linuxdo:Docker沙盒与任务驱动实践

1. 项目概述:一个面向Linux新手的“道场”最近在GitHub上看到一个挺有意思的项目,叫linuxdo。光看名字,你可能以为又是一个Linux命令速查手册或者教程合集。但点进去之后,我发现它的定位非常精准:一个为Linux初学者和日…

作者头像 李华
网站建设 2026/5/11 17:37:07

【STM32H7】第X章 深入USB协议栈:从硬件接口到软件驱动的核心概念

1. USB协议栈的硬件基础 搞嵌入式开发的朋友都知道,USB接口几乎是现代电子设备的标配。但在STM32H7这类高性能MCU上玩转USB,光会插拔线缆可不够。我们先从最底层的硬件接口说起,这是整个USB通信的物理基础。 STM32H7系列内置了全速和高速USB …

作者头像 李华
网站建设 2026/5/11 17:25:52

Frontline CPAS不只是看日志:5个隐藏技巧帮你深度理解蓝牙协议交互

Frontline CPAS不只是看日志:5个隐藏技巧帮你深度理解蓝牙协议交互 蓝牙协议分析工具CPAS常被开发者当作简单的日志查看器,但它的真正价值远不止于此。当你能熟练运用它的高级功能时,这个工具会变成理解蓝牙协议交互的显微镜和解剖刀。本文将…

作者头像 李华