当前位置: 首页 > news >正文

95. 不同的二叉搜索树 II

https://leetcode.cn/problems/unique-binary-search-trees-ii/

class Solution {// 宫水三叶姐解释的很好,可以参考她的解释,我的注释可能没那么明确
//    根据二叉搜索搜索的特性,若某个子树的根节点为 root,那么 root 的左子树任意节点值均比 root.val 要小,root 的右子树任意节点值均比 root.val 要大。
//
//    因此,假设我们使用 [l,r] 连续段来构造二叉搜索树,并且选择了节点 t 作为二叉搜索树的根节点时,那么使用 [l,t−1] 构造出来的二叉搜索树均可作为根节点 t 的左子树;同理,使用 [t+1,r] 构造出来的二叉搜索树均可作为根节点 t 的右子树。
//
//    也就是说,我们可以设计递归函数 List<TreeNode> dfs(int l, int r),含义为使用连续段 [l,r] 进行二叉搜索树构造,并返回相应集合。
//
//    最终答案为 dfs(1, n),起始我们可以枚举 [1,n] 范围内的的每个数 t 作为根节点,并递归 dfs(l, t - 1) 和 dfs(t + 1, r) 获取左右子树的集合 left 和 right,结合「乘法原理」,枚举任意左子树和任意右子树,即可得到 t 作为根节点的二叉搜索树方案集,枚举所有 t 后即可得到所有二叉搜索树的总集。
//
//    注意:当我们运用乘法原理,来构造以 t 为根节点的二叉搜索树时,其 left 或 right 某一边可能为空集,但此时我们仍要将非空的一边子树进行挂载。
//    为了确保两层新循环的逻辑会被执行,对于空集我们不能使用 null 来代指,而要使用 [null] 来代指。public List<TreeNode> generateTrees(int n) {return dfs(1, n);}// dfs(start,end)表示使用区间[start,end]作为根节点去构建二叉搜索树,所能得到的所有可能的二叉搜索树// 这样使用区间传参可以很好的区分左右子树的节点值域,这是根据二叉搜索树的特性推导得到的private List<TreeNode> dfs(int start, int end) {List<TreeNode> res = new ArrayList<>();if (start > end) {// 填充null,而不是返回emptyList或者null,否则下面的合并循环无法执行res.add(null);return res;}for (int i = start; i <= end; i++) {List<TreeNode> l = dfs(start, i - 1);List<TreeNode> r = dfs(i + 1, end);// 合并左右子树,左右子树的所有可能方案之间的关系是乘法原理for (TreeNode left : l) {for (TreeNode right : r) {TreeNode root = new TreeNode(i);root.left = left;root.right = right;res.add(root);}}}return res;}
}

 

http://www.jsqmd.com/news/776943/

相关文章:

  • 手把手教你用示波器实测差分晶振信号:LVDS/LVPECL/HCSL/CML波形与关键参数解读
  • 2026年乌鲁木齐断桥平开窗源头直供完全指南:本地工厂vs外地品牌的真实对比 - 优质企业观察收录
  • IP5513 集成 MCU 的 TWS 耳机充电仓管理 SoC
  • 广州亿源贸易商行:花都五粮液回收公司电话 - LYL仔仔
  • 别再让AMS1117-3.3V过载了!手把手教你用TIP42C PNP三极管给它‘减负’(附实测数据)
  • MEMS微能量收集技术:从环境气流中获取电能的原理与应用
  • 盒马鲜生卡回收渠道测评与指南 - 购物卡回收找京尔回收
  • 慧视HuiVision体验打磨手记:微交互与“看不见的美学”
  • 抖音无水印视频下载终极指南:douyin-downloader完整使用教程
  • 2026年昌吉一体化污水处理设备本地化采购指南:地埋式与工业废水处理方案深度横评 - 精选优质企业推荐官
  • 极速配置!OpenClaw 2.6.6 中文版完整流程记录
  • 别再纠结主题数了!用Python的sklearn+LDA,手把手教你从新闻数据里自动‘挖’出8个高质量主题
  • RAG部署利器talkd/dialog:快速构建AI应用后端的开源框架
  • 2026年乌鲁木齐系统门窗选购指南:断桥平开窗源头直供完全手册 - 优质企业观察收录
  • 别再死磕状态机了!用“催活电话”和“打工人”的比喻,5分钟搞懂Autosar网络管理核心逻辑
  • 别再手动改时间了!用Chrony在Rocky Linux上搭建企业级NTP服务器全记录
  • VideoDownloadHelper终极指南:三步搞定网页视频下载的免费工具
  • 如何快速实现微信网页版访问:3步安装完整指南
  • 2026年AI大模型技术全景:从基础设施到应用层的完整生态图谱
  • STM32 SSD1306 OLED驱动解决方案:解决嵌入式显示瓶颈的技术实践
  • Sunshine游戏串流终极指南:8步搭建你的私人云游戏服务器
  • 促进行业交流:2026年国际半导体展会及高端论坛推荐 - 品牌2026
  • 一键离线保存网站:WebSite-Downloader 终极使用指南
  • 先知大模型:重构营销效率的正确姿势
  • 2026室内3D可视化与空间建模工具推荐:设计师精选指南 - 品牌2025
  • 从68点到106点:InsightFace人脸关键点检测实战对比与选型指南
  • 《海奥华预言》全域数学本源公理思维导图
  • Agent Skills技能库:AI编程助手的标准化能力扩展方案
  • 告别迷茫:手把手教你为AD5700芯片编写HAL库驱动(基于STM32CubeMX)
  • 终极指南:如何快速配置和优化yuzu Switch模拟器