leetcode95--不同的二叉搜索树 II(java)

news2024/11/17 23:47:27

不同的二叉搜索树 II

  • leetcode95 -- 不同的二叉搜索树 II
    • 题目描述
  • 解题思路
  • 代码演示
  • 二叉树专题

leetcode95 – 不同的二叉搜索树 II

原题链接:
https://leetcode.cn/problems/unique-binary-search-trees-ii/

题目描述

给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。

示例1:
在这里插入图片描述
输入:n = 3
输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]

示例2:
输入:n = 1
输出:[[1]]

提示:
1 <= n <= 8

解题思路

我们用递归去解答.
递归时首先选择不同的数字来当头节点,
选中头节点后,左树能选的数字只能比他小的.
右边子树能选的数字要比这个这个数字大
这样是为了满足搜索二叉树,.
这样递归下去,我们就可以得到左树能组成的所有可能
得到右树所有的可能
然后把两边的可能进行排列组合
组成一颗树,加到集合中,进行返回.

代码演示

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<TreeNode> generateTrees(int n) {
        if(n == 1){
            List<TreeNode> ans = new ArrayList<>();
            ans.add(new TreeNode(n));
        }
        return process(1,n);
    }

	/**
	* 递归
	* L 左边界
	* R 右边界
	*/
    public List<TreeNode> process(int L ,int R){
        List<TreeNode> ans = new ArrayList<>();
        //base case 
        if(L > R){
            ans.add(null);
            return ans;
        }
        //从左边界到右边界依次选择一个数字当头节点
        for(int i = L ; i <= R;i++){
       		 // 左树所有的可能组合
       		 //因为是搜索二叉树,左边的节点的值要比头节点小,
       		 //选择一个数当头节点后,
       		 //左树可选数字只能是小于当前数字的
            List<TreeNode> lefts = process(L,i - 1);
            //右树边界 
            List<TreeNode> rights = process(i + 1,R);
            for(TreeNode left : lefts){
                for(TreeNode rig : rights){
                //排列组合 进行把左树所有的组合和右树所有的组合,
                //组成不同的树,加到集合中
                    TreeNode head = new TreeNode(i);
                    head.left = left;
                    head.right = rig;
                    ans.add(head);

                }
            }
        }
        return ans;

    }
}

二叉树专题

leetcode96–不同的二叉搜索树

二叉搜索树中第K小的元素

从二叉搜索树到更大和树

根据前序和后序遍历构造二叉树

最大二叉树

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTP协议+Ajax基本知识+axios+模板引擎的基本使用

1.客服端服务器 我们先来了解一下上网的目的是什么&#xff1f; 例如&#xff1a;刷微博、浏览新闻、在线听音乐、在线看电影、等等... 上网的本质目的&#xff1a;通过互联网的形式来 获取和消费资源 1.2 服务器 上网过程中&#xff0c;负责 存放和对外提供资源 的电脑&am…

dockers映射网络及数据卷

DOCKER docker run创建镜像时 1&#xff09;检查本地是狗存在指定的惊像 2&#xff09;利用镜像创建并启动一个容器 3&#xff09;分配一个文件系统给容器&#xff0c;在只读的镜像曾外改在一层可读可写层 4&#xff09;从宿主机配置的网桥接口中桥接一个虚拟机接口到容器…

springboot+vue实验室器材预约学习系统设计与实现

1、理论学习 深入学习Java Web开发技术。 在此基础上研究核心框架SpringBoot, MyBatis和Bootstrap等&#xff0c;为设计开发基于J2EE_SpringBoot的中药实验管理系统做好技术准备。 2.1功能要求 课题以提高中药实验开放共享、实施实验室网络化管理、提供优质的实验教学信息化服…

几何分布和负二项分布的关系

几何分布和负二项分布的关系 几何分布 在独立重复Bernoulli试验中&#xff0c;事件A首次发生时所进行的试验次数X服从几何分布 P ( X k ) ( 1 − p ) k − 1 p &#xff08; k 1 , 2 ⋯ &#xff09; E ( X ) 1 p 、 D ( X ) 1 − p p 2 P(Xk)(1-p)^{k-1}p&#xff08;k…

sql server 字符串链接,及表连接多个值显示连接显示为一列 STUFF for xml path

sql server 字符串链接&#xff0c;及表连接多个值显示连接显示为一列 STUFF for xml path STUFF ( character_expression , start , length , replaceWith_expression ) 以下示例从第一个字符串 abcdef 的第 2 个位置 (b) 开始删除三个字符&#xff0c;然后在删除位置插入…

第10章_管理库表(DDL语句)

第10章_管理库表(DDL语句) 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只能是一团乱麻&#xff0c;无从下手。那么&#xff0c;怎样才能把用户各种经营相关的、…

Oracle中的数据导出(2)

将Oracle数据库中的数据导出给其他的系统使用 怎么实现上述的这个需求呢&#xff1f; 这里我是使用spool脚本方法导出数据&#xff0c;其中在Oracle中的数据导出(1)http://t.csdn.cn/k5AOZ 已经描述了spool命令的使用。此篇我将使用spool命令脚本导出数据&#xff0c;下面是…

深入理解Linux虚拟内存管理(三)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

Stable Diffusion 超详细讲解

Stable Diffusion 超详细讲解 这篇文章是 《Stable Diffusion原理详解》的后续&#xff0c;在《Stable Diffusion原理详解》中我更多的是以全局视角讲解了 Stable Diffusion 的原理和工作流程&#xff0c;并未深入步骤细节。本文将在《Stable Diffusion原理详解》和《Diffusio…

【自用 三层代码结构】「go语言」项目中降低服务内的耦合性使用wire框架或工厂模式进行管理

文章目录 前言一、为什么需要分层&#xff1f;1. Server服务&#xff08;向外暴露gRPC接口&#xff09;&#xff1a;2. API服务&#xff08;向外暴露HTTP接口&#xff09;&#xff1a;3. domain模型的概念&#xff1a;DO&#xff08;Domain Object&#xff09;&#xff1a;DTO&…

Docker安装Mysql教程(linux)

本文主要讲解如何使用Docker去安装mysql 一、搜索镜像 docker search mysql二、拉取镜像 不指定版本&#xff0c;默认为最新版&#xff0c;这里用的5.7 docker pull mysql:5.7三、创建容器&#xff08;运行镜像&#xff09; 1、内外都使用3306端口&#xff08;确保你的宿主机3…

Umi微前端水印踩坑以及解决方案

最近公司需要在管理后台加一个水印方案~ 项目用的umi方案,以为就是改一个配置的问题,后来发现坑点还蛮多~ 希望此稳定能帮助到用umi 的你们. 一. 先来说说心路历程 坑点1 umi的水印适配只能在layout中进行配置,也就是路由配置中layout为false的页面无法配置水印,比如说登录页…

SCS【27】单细胞转录组之识别标记基因 (scran)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a; Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅&#xff0c;述说单细胞测序的前世…

规则引擎架构-基于easy-rules

目录 概念理解实例和编码抽象出2条规则简单的规则引擎事实1的处理事实2的处理 easy-rules 规则的抽象和执行事实描述规则的抽象默认的规则 动态代理执行规则和动作规则的执行&#xff1a;org.jeasy.rules.core.DefaultRulesEngine#doFirepublic class RuleProxy implements Inv…

Java上进了,JDK21 要来了,并发编程再也不是噩梦了

更丝滑的并发编程模式 如果说之前的 JDK17你还觉得没必要折腾&#xff0c;那 JDK21确实有必要关注一下了。因为 JDK21 引入了一种新型的并发编程模式。 当前 Java 中的多线程并发编程绝对是另我们都非常头疼的一部分&#xff0c;感觉就是学起来难啃&#xff0c;用起来难用。但…

基础篇010.3 STM32驱动RC522 RFID模块之三:STM32软件模拟SPI驱动RC522

目录 1. 实验硬件及原理图 2. 利用STM32CubeMX创建MDK工程 2.1 STM32CubeMX工程创建 2.2 配置调试方式 2.3 配置时钟电路 2.4 配置时钟 2.5 配置GPIO 2.6 配置串口 2.7 项目配置 3. MDK工程驱动代码调试 3.1 按键、LED程序 3.2 SPI软件模拟程序 3.3 RC522驱动程序…

Unity制作二次元卡通渲染角色材质——1、资源分析

Unity制作二次元材质角色 回到目录 大家好&#xff0c;我是阿赵。 开始制作二次元角色材质之前&#xff0c;我觉得应该是先分析一下&#xff0c;我手上拿到的这个角色模型资源&#xff0c;总共有哪些信息是我们能用的。 所以这篇文章我不会分享具体的Shader&#xff0c;但我感觉…

基于RT-Thread快速上手SD NAND 虚拟文件系统

SD NAND 也称之为贴片式TF卡&#xff0c;贴片式SD卡&#xff0c;采用标准的SDIO接口&#xff0c;兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M&#xff0c;对比128M的SD卡&#xff0c;可以看到贴片SD卡尺寸更小&#xff0c;不要SD卡座&#xff0c;占…

STM32杂乱笔记

问题都比较的基础和低级&#xff0c;仅记录一下。 问题一&#xff1a;stm32的某个.c文件中无法调用另一个.c中的指定变量&#xff0c;怎么解决&#xff1f; 以g_ADC_sample_vaule.Iu 为例&#xff0c;它是 drive_adc_info.c 里面的变量&#xff0c;想要在system_time_sequenc…

5.4 二叉树的性质和存储结构

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 5.4.1 二叉树的性质 二叉树是一种特殊的树结构&#xff0c;它具有一些重要的性质&#xff1a; 1. 每个节点最多有两个子节点&#xff1a;二叉树的每个…