Java中等题-不同的二叉搜索树2(力扣)

devtools/2024/9/26 1:23:37/

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

输入: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]]

这道题我只知道要用回溯法,但是具体怎么实现啊我不太清楚,所以直接看官方题解思路:

我的理解如下:每个根节点的左子树或者右子树都是一个二叉搜索树,所以可以化为一个非常简单的模型:一个根节点+一个左子树+一个右子树;当左子树和右子树都是null的时候,这个二叉搜索树就只有根节点,这个时候就可以list.add这个树,并且返回这个list了

每一个数都可以作为根节点,因此要遍历

根节点的值大于左子树的根节点小于右子树的根节点,因此可以划分为更小的相同的问题

java">class Solution {public List<TreeNode> generateTrees(int n) {if(n<=1){return new LinkedList<TreeNode>();}return generateTrees(1,n);}public static List<TreeNode> generateTrees(int start,int end){List<TreeNode> list=new LinkedList<>();if(start>end){list.add(null);return list;}for(int i=start;i<=end;i++){List<TreeNode> list1 = generateTrees(start, i - 1);List<TreeNode> list2 = generateTrees(i + 1, end);for(TreeNode left:list1){for(TreeNode right:list2){TreeNode t=new TreeNode();t.left=left;t.right=right;list.add(t);}}}return list;}
}


http://www.ppmy.cn/devtools/94466.html

相关文章

RecyclerView的缓存机制(面试常客)

在构建滚动列表时&#xff0c;我们常首选RecyclerView&#xff0c;出于它优秀的缓存复用机制。 核心机制 RecyclerView的缓存机制又称回收复用机制&#xff0c;RecyclerView构建列表视图分为以下三步&#xff1a; 第一步的创建ViewHolder是RecyclerView构建视图时最耗时的操作…

Android Studio报错: This item may not have a label readable by screen readers

Android Studio报错: This item may not have a label readable by screen readers 报错信息: Solution: //1. 在LinearLayout 中添加代码 xmlns:tools"http://schemas.android.com/tools" //2. 在Button中添加代码 tools:ignore"TouchTargetSizeCheck,Speaka…

Mysql(三)---增删查改(基础)

文章目录 前言1.补充1.修改表名1.2.修改列名1.3.修改列类型1.4.增加新列1.5.删除指定列 2.CRUD3.新增(Create)3.1.单行插入3.2.指定列插入3.3.多行插入 4.数据库的约束4.1.约束的分类4.2.NULL约束4.3.Unique约束4.4.Default 默认值约束4.5.PRIMARY KEY&#xff1a;主键约束4.6.…

多线程学习之ThreadLocal详细笔记

ThreadLocal详细笔记 一、ThreadLocal的基本概念二、ThreadLocal的独特性2.1 数据访问方式2.2 线程安全实现2.3 适用场景 三、ThreadLocal 的简单使用四、ThreadLocal 的工作原理五、ThreadLocal和内存泄漏的关系5.1 ThreadLocalMap的Entry的Key设计成弱引用5.2 弱引用会导致内…

python发送外部请求

在Python中&#xff0c;服务器发送外部请求是一个常见的操作&#xff0c;尤其是在需要集成不同服务或API时。有多种库可以帮助你完成这项任务&#xff0c;但最流行和广泛使用的库之一是requests。以下是如何使用requests库在Python服务器中发送外部请求的基本步骤&#xff1a; …

智启万象|挖掘广告变现潜力,保障支付安全便捷

谷歌致力于为开发者提供 先进的广告变现与支付解决方案 一起回顾 2024 Google 开发者大会 了解如何利用谷歌最新工具和功能 提高变现收入&#xff0c;优化用户体验&#xff0c;保障交易安全 让变现更上一层楼 广告检查器是谷歌 AdMob 平台最新推出的高级测试工具&#xff0c;开…

Qt5编译qmqtt库使用MQTT协议连接华为云IOT完成数据上传与交互

一、前言 随着物联网技术的发展,越来越多的设备通过网络互相连接,形成了庞大的智能系统。这些系统能够收集、分析并响应各种数据,从而实现自动化控制和智能化管理。在这个背景下,MQTT 成为了一个广泛使用的轻量级消息传输协议,特别适用于资源受限的环境,如移动应用或远程…

前端项目中的全局异常处理:全面捕获与处理各种异常

在前端开发中&#xff0c;处理异常是保证应用程序稳定性的重要部分。无论是接口调用失败、JavaScript 错误&#xff0c;还是异步操作中的未捕获异常&#xff0c;都可能导致用户体验问题。本文将详细介绍如何在 Vue 3 项目中全方位捕获和处理这些异常&#xff0c;确保你的应用在…