题目描述

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

示例

输入:3

输出:

[

[1,null,3,2],

[3,2,null,1],

[3,1,null,null,2],

[2,1,3],

[1,null,2,null,3]

]

解释:

以上的输出对应以下 5 种不同结构的二叉搜索树:

官方的图

声明

本文答案参考自 LeetCode 官方题解。[敲打]

讲个骚话顺便科普一下“二叉搜索树”

好家伙,先有Ⅱ呢~[奸笑][看]

二叉搜索树关键的性质是根节点的值 大于 左子树所有节点的值,小于 右子树所有节点的值,且左子树和右子树也同样为二叉搜索树。

解法:递归

这种东西,经常需要考虑递归

因为 二叉搜索树某一结点的左子树和右子树也同样为二叉搜索树

所以,对于这道题:

  1. 要生成 [1 , n] 的二叉搜索树,我们可以把 [1 , n] 拆分为 [ 1 , i ] 和 [ i , n]
  2. 分别对 [ 1 , i ] 和 [ i , n] 求其生成的二叉搜索树
  3. 然后再把第2步中的两棵子二叉搜索树 拼接在一起

就这样一层一层地拆分下去,然后再层层返回,我们就可以得到二叉搜索树了。

递归就是这样,我们的思路是清晰的,代码也是简洁的,但是在分析代码运行的过程就有点懵。所以我们就尽量不要想太多,思路对就行了[呲牙]

这里的 i 可以取 1 ~ n 之间,因为题目说是要 生成 所有的 二叉搜索树 。

gorm preload 搜索_LeetCode刷题笔记|95:不同的二叉搜索树 II相关推荐

  1. Leetcode 95. 不同的二叉搜索树 II 解题思路及C++实现

    解题思路: 递归的思路. /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* ...

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

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

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

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

  4. [leetcode] 95. 不同的二叉搜索树 II

    开始的想法是全排列数字1~n作为输入,然后构造BST,但是,不行,有重复. 下面代码是leetcode官方题解的C++版本 https://leetcode-cn.com/problems/uniqu ...

  5. LeetCode 96不同的二叉搜索树95不同的二叉搜索树Ⅱ

    微信搜一搜:bigsai 算法文章题解全部收录在github仓库bigsai-algorithm 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 92反转链表Ⅱ&93复 ...

  6. 数据结构与算法--力扣109题将有序双向链表转换为二叉搜索树

    将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫,因此有此次总 ...

  7. java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)

    leetcode刷题笔记-114. 二叉树展开为链表(java实现) 题目描述 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 rig ...

  8. ​LeetCode刷题实战450:删除二叉搜索树中的节点

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. 数据结构与算法--力扣108题将有序数组转换为二叉搜索树

    力扣108提将有序数组转换为二叉搜索树 近一年都比较关注算法相关的知识,也刷了不少题,之前的文章中大多也是算法相关的文章,但是感觉每次遇到树相关的题型都不能应对自如,因此还是有必要在相关知识上下功夫, ...

最新文章

  1. Listener 监听器
  2. SVM(二)从拉格朗日对偶问题到SVM
  3. react学习(59)--this.props语法糖
  4. BZOJ2741 【FOTILE模拟赛】L 【可持久化trie + 分块】
  5. java导出数据到excel模板_springboot+jxls 根据Excel模板 填写数据并导出
  6. 简单又帅气的折纸机器人教程_几张纸做出帅气纸飞机,做法简单飞行速度超快,手工折纸飞机...
  7. PHP两文件嵌套循环引用,php的循环与引用的一个坑,php循环引用_PHP教程
  8. 如何将 Mac 置入睡眠状态或唤醒 Mac?
  9. java之RestTemplate的访问应用
  10. 【深度好文】二维图像傅里叶变换 YYDS
  11. Poker Ⅱ 机械键盘使用说明书 自备
  12. Office办公软件测试题
  13. Android更改开机画面
  14. 挑战SQL经典题(一)
  15. APP开发:线上教育APP盈利模式分析
  16. WPS 多文档独立显示
  17. Docker构建JDK 镜像
  18. Augment Reality(AR)现实增强的原理
  19. 小公司的“鸡头”OR大公司的“凤尾”
  20. 吉林大学计算机科学郝琳琳,胡亮-吉林大学计算机科学与技术学院

热门文章

  1. 上海交大计算机学院奖学金,上海交通大学-电子信息与电气工程学院-学生工作办公室...
  2. 二维温度场matlab编程,二维温度场重建算法(价钱可议)
  3. bigdecimal取小数部分_小数精度丢失问题分析和解决
  4. 比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...
  5. 我是如何使用git把本地代码上传到CODECHINA上的,值得借鉴
  6. mysql dump 10.13_mysqldump版本引起的问题
  7. 配置环境_JavaJDK环境变量配置
  8. mysql主从复制时间配置_MySQL主从复制配置
  9. 小程序在wxml页面中取整
  10. (1-1)line-height的定义和行内框盒子模型