给定一个整数 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 种不同结构的二叉搜索树:

1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-binary-search-trees-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vector<TreeNode *> generateTrees(int n) {if (n == 0) return {};return *generateTreesDFS(1, n);}vector<TreeNode*> *generateTreesDFS(int start, int end) {vector<TreeNode*> *subTree = new vector<TreeNode*>();if (start > end) {subTree->push_back(NULL);}     else {for (int i = start; i <= end; ++i) {vector<TreeNode*> *leftSubTree = generateTreesDFS(start, i - 1);vector<TreeNode*> *rightSubTree = generateTreesDFS(i + 1, end);for (int j = 0; j < leftSubTree->size(); ++j) {for (int k = 0; k < rightSubTree->size(); ++k) {TreeNode *node = new TreeNode(i);node->left = (*leftSubTree)[j];node->right = (*rightSubTree)[k];subTree->push_back(node);}}}}return subTree;}
};

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 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, ...

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

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

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

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

最新文章

  1. 关于运行ssm,web请求出现HTTP415错误
  2. vue更新data无效,页面data没刷新 vue.set
  3. svm通俗讲解_机器学习算法:SVM
  4. OpenEIM以前在合作伙伴做的时候
  5. linux java 进程内存_linux – 在java进程中消耗内存的是什么?
  6. Python 上下文管理器与with语句
  7. 腾讯疯狂扩展7000人!我居然挂在了项目这块。。。
  8. java selenium环境安装
  9. Leetcode之最长公共前缀
  10. Atitit 军事学 之 军事思想学与打猎学总结以及在软件行业中的应用 attilax著 1. 军事思想在软件行业技术开发中的想通之处 1 1.1. 软件开发本质上是一种作战,敌人是时间与费用成本
  11. 【报告分享】2020年新一代人工智能白皮书-产业智能化升级(附下载)
  12. linux版虚拟示波器,借你一双慧眼——DSCope虚拟示波器评测
  13. APP如何实现「年轻化」的需求?
  14. 20个最受欢迎商务旅游城市:纽约连续四年拿第一,上海第四
  15. 中国首个进入谷歌 GSoC 的开源项目: Casbin, 2022 年预选生招募~
  16. SEG1数字中继模块(中继网关) 产品型号:SEG1
  17. Python初学者学习笔记
  18. JS正则表达式数字、字母、特殊符号第一弹
  19. 1047: 阿姆斯特朗数
  20. NOWCODER 白魔法师(图,并查集)

热门文章

  1. IOS中设置全局变量
  2. 关于 SENDKEYS 的代码
  3. java statement 返回类型,6.3 返回类型和返回语句 | Return type Return statement
  4. 1t硬盘怎么分区最好_这下尴尬了,电脑硬盘分区常见误区,移动硬盘分区方法...
  5. html5中音乐播放器怎么写,打造属于自己的音乐播放器 HTML5之audio标签
  6. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  7. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  8. coverity代码检测工具介绍_微服务测试之静态代码扫描
  9. OBTW的完整形式是什么?
  10. python关键字和保留字_或带有Python示例的关键字