Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >95. 不同的二叉搜索树 II

95. 不同的二叉搜索树 II

作者头像
张伦聪zhangluncong
发布于 2022-10-26 10:21:33
发布于 2022-10-26 10:21:33
18000
代码可运行
举报
运行总次数:0
代码可运行

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

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: 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

解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<TreeNode> generateTrees(int n) {
        if (n <= 0) {
            return new ArrayList<TreeNode>();
        }
        return generateSubTree(1, n);
    }

    public ArrayList<TreeNode> generateSubTree(int start, int end) {
        ArrayList<TreeNode> result = new ArrayList<TreeNode>();
        if (start > end) {
            result.add(null);
            return result;
        }
        for (int rootVal = start; rootVal <= end; rootVal++) {
            for (TreeNode leftSubTreeRoot : generateSubTree(start, rootVal - 1)) {
                for (TreeNode rightSubTreeRoot : generateSubTree(rootVal + 1, end)) {
                    TreeNode root = new TreeNode(rootVal);
                    root.left = leftSubTreeRoot;
                    root.right = rightSubTreeRoot;
                    result.add(root);
                }
            }
        }
        return result;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LeetCode 0095. 不同的二叉搜索树 II[动态规划详解]
项目 GitHub LeetCode 全解,欢迎大家 star、fork、merge,共同打造最全 LeetCode 题解!
Yano_nankai
2021/03/18
2660
LeetCode 0095. 不同的二叉搜索树 II[动态规划详解]
【Leetcode】95~96 不同的二叉搜索树
给点一个数,去构造BST. [1, 2, 3] 可以把这个数列做左子树和右子树的划分: [1] [2, 3] [1, 2] [3]
Leetcode名企之路
2019/03/06
4450
golang刷leetcode 二叉树(1)不同二叉搜索树
3,注意边界情况,左(右)子树为空, start==end,start+1==end
golangLeetcode
2022/08/02
2040
LeetCode 95. 不同的二叉搜索树 II(递归)
类似题目: 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)** LeetCode 96. 不同的二叉搜索树(DP)
Michael阿明
2020/07/13
6180
一天一大 leet(不同的二叉搜索树 II)难度:中等-Day20200721
这道题和之前的一道不同的二叉搜索树差不多了,只是之前只需要输出种类数,本题需要输出二叉树
前端小书童
2020/09/24
2870
一天一大 leet(不同的二叉搜索树 II)难度:中等-Day20200721
不同的二叉搜索树II
该问题是不同的二叉搜索树的升级版,该问题需要将所有可能的二叉树都重建出来。大体思路还是相同,枚举出头结点,再利用头结点将当前序列一分为2分别作为其左子树和右子树。
你的益达
2020/08/05
4840
【综合笔试题】难度 1.5/5,常规二叉树爆搜题
这是 LeetCode 上的 「95. 不同的二叉搜索树 II」 ,难度为 「中等」。
宫水三叶的刷题日记
2022/12/30
3000
【综合笔试题】难度 1.5/5,常规二叉树爆搜题
Leetcode No.95 不同的二叉搜索树 II
给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。
week
2021/11/29
2060
96. 不同的二叉搜索树 II Krains 2020-09-03 树
但是如果按照上述递归函数的方法写,每次递归只能返回一颗树,我们需要的是多颗树,我们可以将不同的根结点装入List然后返回,实际上,上述代码可以改写成
Krains
2020/09/10
3180
Leetcode 95. 不同的二叉搜索树 II
题目描述 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例 1: 解法 参考Leetcode 96. 不同的二叉搜索树 计算二叉树的种类数时,只需要知道整数的个数
zhipingChen
2019/07/15
6060
Leetcode 95. 不同的二叉搜索树 II
LeetCode-面试题54-二叉搜索树的第k大节点
观察可以得知,中序遍历后得到的序列是递增的,求第K个大的节点可以转化为求中序遍历的倒序的第k个节点
benym
2022/07/14
2580
golang刷leetcode 二叉树(1)验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节
golangLeetcode
2022/08/02
2380
Leetcode No.99 恢复二叉搜索树
给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。
week
2021/11/29
4030
LeetCode 75 —— 98. 验证二叉搜索树
输入:root = [5,1,4,null,null,3,6] 输出:false 解释:根节点的值是 5 ,但是右子节点的值是 4 。 提示: 树中节点数目范围在[1, 10^4] 内 -2^31 <= Node.val <= 2^31 - 1 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/validate-binary-search-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Regan Yue
2023/07/10
2150
LeetCode 75 —— 98. 验证二叉搜索树
每日三题-验证二叉搜索树、二叉树的直径、把二叉搜索树转换为累加树
👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 算法 🌈 算法类型:Hot100题 🌈 ❤️ 支持我:👍点赞 🌹收藏 🤟关注 每日三题 验证二叉搜索树 二叉树的直径 把二叉搜索树转换为累加树 验证二叉搜索树 解法一 递归 每次判断cur是否在left与right之间 class Solution { public boolean isValidBST(TreeNode root) {
才疏学浅的木子
2022/11/18
2210
每日三题-验证二叉搜索树、二叉树的直径、把二叉搜索树转换为累加树
LeetCode - 二叉搜索树中的插入操作
原题地址:https://leetcode-cn.com/problems/insert-into-a-binary-search-tree/
晓痴
2019/08/09
4910
LeetCode - 二叉搜索树中的插入操作
Python3、Java 实现「783. 二叉搜索树节点最小距离」
https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/
与你一起学算法
2021/04/28
4590
Python3、Java 实现「783. 二叉搜索树节点最小距离」
☆打卡算法☆LeetCode 95、不同的二叉搜索树 II 算法解析
链接:95. 不同的二叉搜索树 II - 力扣(LeetCode) (leetcode-cn.com)
恬静的小魔龙
2022/08/07
2380
☆打卡算法☆LeetCode 95、不同的二叉搜索树 II  算法解析
二叉搜索树登场!
到了二叉搜索树,开始要换一个思路了,如果没有利用好二叉搜索树的特性,就容易把简单题做成了难题了。
代码随想录
2021/09/08
3350
二叉搜索树登场!
常见的二叉树系统题解
TIPS:前中后序遍历区别在于三字中的中间那个字,前、中、后序分别对应左、根、右。
鱼找水需要时间
2023/12/23
2390
常见的二叉树系统题解
推荐阅读
相关推荐
LeetCode 0095. 不同的二叉搜索树 II[动态规划详解]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档