题目描述:

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

思路:

这是一道经典的分治算法题目,相比回溯算法,虽然都是递归中包含循环,循环中嵌套递归。但是,分治算法会利用到前面相互独立的子问题的中间结果,并将子问题层层串接在一起。最外层循环,将子问题划分为和为 n 的两个子问题,然后下一层递归又分别将子问题划分为更小的子问题,直到小问题小到只有大小为1的子问题,再将小问题的结果逐层向上回送。

public List<TreeNode> generateTrees(int n) {if(n==0)return new ArrayList<TreeNode>();return generTree(1,n);
}private List<TreeNode> generTree(int start, int end) {List<TreeNode> l = new ArrayList<TreeNode>();if(start > end) {l.add(null);return l;}for (int i = start; i <= end; i++) {List<TreeNode> subLeft = generTree(start,i-1);List<TreeNode> subRight = generTree(i+1,end);for (TreeNode left : subLeft) {for (TreeNode right : subRight) {TreeNode temp = new TreeNode(i);temp.left = left;temp.right = right;l.add(temp);}}}return l;
}

不同的二叉搜索树 II相关推荐

  1. 20200721:每日一题之不同的二叉搜索树 II(leetcode95)

    不同的二叉搜索树 II 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 很基本的思路就是递归,没太多其他想法,直接根据二叉搜索树的性质进行递归即可. 代码实现 class Solution ...

  2. Leetcode95. 不同的二叉搜索树 II(C语言)

    Leetcode95. 不同的二叉搜索树 II(C语言) 算法-分治:算法与数据结构参考 题目: 给定一个整数 n,生成所有由 1 - n 为节点所组成的二叉搜索树1.例: 输入: 3 输出: [ [ ...

  3. 刻意练习:LeetCode实战 -- Task23. 不同的二叉搜索树 II

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  4. 【数据结构与算法】之深入解析“不同的二叉搜索树II”的求解思路与算法示例

    一.题目要求 给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同二叉搜索树,可以按 任意顺序 返回答案. 示例 1: 输入:n = 3 输出:[[1,nul ...

  5. 95. Unique Binary Search Trees II 不同的二叉搜索树 II

    给定一个整数 n,生成所有由 1 - n 为节点所组成的 二叉搜索树 . 示例: 输入:3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1, ...

  6. gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II

    题目描述 给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 . 示例 输入:3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null ...

  7. 95. 不同的二叉搜索树 II

    给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [   [1,null,3,2],   [3,2,null,1],   [3,1,null,nul ...

  8. leetcode95. 不同的二叉搜索树 II(递归)

    给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 .示例:输入:3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1, ...

  9. [Leetcode][第95题][JAVA][不同的二叉搜索树 II][递归]

    [问题描述][中等] [解答思路] 1. 递归 复杂度 class Solution {public List<TreeNode> generateTrees(int n) {if (n ...

  10. LeetCode 95. 不同的二叉搜索树 II(递归)

    1. 题目 给定一个整数 n,生成所有由 1 - n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2], ...

最新文章

  1. ZJU-java进阶笔记 第一、二周(类与对象,对象交互)
  2. 不要担心,我可以一个人走
  3. android:layout_gravity=end,Android中 layout_gravity和gravity的区别
  4. Arrays对数组,二分查找,冒泡排序
  5. ApacheCN C/C++ 译文集(二) 20211204 更新
  6. 【Kafka】kafka KafkaException: Exception while loading Zookeeper JAAS login context ‘Client‘
  7. 设计模式笔录(一),什么是设计模式
  8. 外层div自动撑大为什么没有最大_在工业自动化行业,为什么电阻触摸屏更受欢迎...
  9. C#温故而知新学习系列之面向对象编程—自动属性(十一)
  10. 管理感悟:正确认识自己的工作
  11. sqlite数据库保存聊天记录
  12. offer和面经分享(内含offer截图)
  13. 数仓4.0(三)------数据仓库系统(续)
  14. 【Python爬虫案例】批量采集网站壁纸,实现自动更换桌面壁纸
  15. iOS 面试题集合~[有答案]
  16. layui table数据表格前端分页
  17. 如何利用Goby进行外围打点
  18. 量化投资之宏观篇 | 达里欧谈美国社会的矛盾及如何改良
  19. 团体程序设计天梯赛-练习集 1-2 打台球(5 分)
  20. linux的root用户默认密码,Linux下root初始密码设置方法

热门文章

  1. 现在补上个人项目的分析照片
  2. Lua中的操作系统库
  3. docker compose详解
  4. php返回原界面,thinkphp实现登录后返回原界面
  5. python函数对变量的作用_python函数局部变量用法
  6. accounts/login/?next=/account/password-change/
  7. Implementation of the USB 3.0 controller not found!
  8. spark的rdd的含义_Spark里边:到底是什么RDD
  9. python绘制基因结构图_Python调用graphviz绘制结构化图形网络示例
  10. CAD编辑工具中如何设置图纸的比例