[LeetCode] 95. Unique Binary Search Trees II

【simulink模型】独立悬架振动模型,七自由度整车simulink模型 车辆悬架系统的设计对提升车辆行驶平顺性和操纵稳定性具有重要意义。本文构建了独立悬架的振动仿真模型以及七自由度整车动力学模型,基于 Simulink 平台实现对模型的动态响应仿真。通过对比不同工况下的车辆振动响应,验证了模型的准确性与实用性。研究结果为车辆悬架系统的优化设计提供了有力支持。 阅读详情

Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST’s (binary search trees) that store values 1 … n.
Example:

Input: 3
Output:
[
[1,null,3,2],
[3,2,null,1],
[3,1,null,null,2],
[2,1,3],
[1,null,2,null,3]
]
Explanation:
The above output corresponds to the 5 unique BST’s shown below:
1
\
3
/
2 等等

解析

递归构建二叉树,如果以 i 为根节点,那么其左子树由[1, i - 1]构成,右子树由[i + 1, n] 构成。要构建包含1到n的二叉搜索树,只需遍历1到n中的数作为根节点,以i为界将数列分为左右两部分,小于i的数作为左子树,大于i的数作为右子树,使用两重循环将左右子树所有可能的组合链接到以i为根节点的节点上。
例子:
举一个简单的数据验证下,以[1, 2, 3]为例,调用堆栈图如下所示:
helper(1,3)
[leftTree]: helper(1, 0) ==> return NULL
—loop i = 2—
[rightTree]: helper(2, 3)
[leftTree]: helper(2,1) ==> return NULL
[rightTree]: helper(3,3) ==> return node(3)
[for loop]: ==> return (2->3)
—loop i = 3—
[leftTree]: helper(2,2) ==> return node(2)
[rightTree]: helper(4,3) ==> return NULL
[for loop]: ==> return (3->2)

代码

class Solution {
public:
    vector<TreeNode*> generateTrees(int n) {
        if(n == 0)
            return {};
        return helper(1,n);
    }

    vector<TreeNode* > helper(int start, int end){
        vector<TreeNode *> result;
        if(start > end){
            result.push_back(NULL);
            return result;
        }
        for(int i=start; i <= end;i++){
            vector<TreeNode* > lefttree = helper(start, i-1);
            vector<TreeNode* > righttree = helper(i+1, end);
            for(int j=0; j < lefttree.size(); j++){
                for(int k=0; k < righttree.size(); k++){
                    TreeNode* root = new TreeNode(i);
                    root->left = lefttree[j];
                    root->right = righttree[k];
                    result.push_back(root);
                }
            }
        }
        return result;
    }
};

上述代码需要大量拷贝,使用指针存储变量,代码如下:

class Solution {
public:
    vector<TreeNode*> generateTrees(int n) {
        if(n == 0)
            return {};
        return *helper(1,n);
    }

    vector<TreeNode* > *helper(int start, int end){
        vector<TreeNode *> *result = new vector<TreeNode*>();
        if(start > end){
            result->push_back(NULL);
            return result;
        }
        for(int i=start; i <= end;i++){
            vector<TreeNode* > *lefttree = helper(start, i-1);
            vector<TreeNode* > *righttree = helper(i+1, end);
            for(int j=0; j < lefttree->size(); j++){
                for(int k=0; k < righttree->size(); k++){
                    TreeNode* root = new TreeNode(i);
                    root->left = (*lefttree)[j];
                    root->right = (*righttree)[k];
                    result->push_back(root);
                }
            }
        }
        return result;
    }
};

参考

https://www.kancloud.cn/kancloud/data-structure-and-algorithm-notes/73055
http://www.cnblogs.com/grandyang/p/4301096.html

智能问数系统的完整技术栈与实现逻辑 提取并增强数据库 Schema(含业务语义)选择 LLM(开源 qwen2 / 商业 GPT-4o)构建 RAG 向量库(存储历史问法)实现 SQL 安全校验与权限控制添加结果自然语言解释 + 可视化部署到只读数据库环境🔑核心原则“先保证安全,再追求智能”—— 一个能生成错误 SQL 的智能问数系统,比没有更危险。 阅读详情

相关推荐

动手学Moveit2 | 运行配置好的机械臂功能demo

通过这个小demo你可以直观的感受moveit2的强大,但还有很多需要我们探索的,比如机械臂是如何规划的,规划的过程中如何结合环境信息,规划的时候机械臂如何求解,如何和真实的机械臂对接等等,这些都需要你来进一步探索,今天就到这里,明天给大家秀一下小仙女焊的fishbot运控板。

生活不止眼前的苟且 8880

LeetCode95. Unique Binary Search Trees II

所有可能的BST

grllery的博客 462

Cursor 使用教程(2025年更新版)

官方Cursor详细使用教程在“扩展学习”

我是赛博AI Lewis 7082

LeetCode 95. Unique Binary Search Trees II

Description https://leetcode.com/problems/unique-binary-search-trees-ii/ 给定n,生成所有结构上唯一的二叉搜索树,并返回所有这些树的root。 Solving Ideas 与Unique Binary Search Trees类似,不同的是,这里需要构造出所有结构上唯一的BST 实现起来比较简单就是使用 递归 的方法,遍历所有...

wylu 317

【DenseFusion系列目录】代码全讲解+可视化+计算评估指标

DenseFusion是2019年李飞飞等提出的用于6D姿态估计的网络。它是一种端到端的结构,输入为RGB-D数据,输出为某个物体的6D姿态。主要贡献就是针对颜色特征和几何特征提出了一种像素级稠密融合的方式。在LineMOD数据集和YCB-Video数据集上进行了实验。本文对该网络进行完整的复现,详细解析了源代码中的重要内容。由于本人刚接触姿态估计方面的内容,因此有些解析部分包含很基础的知识,放在【DenseFusion详解】专栏。除此之外,本文在源代码的基础上进行了后续评价指标的计算以及结果的可视化,这些

weixin_44564705的博客 9417

T265摄像头插着开机后,需要重新插拔才能正常启动

T265摄像头插着开机后,需要重新插拔才能正常启动

qq_35598561的博客 1078

leetcode 95. Unique Binary Search Trees II | 96. Unique Binary Search Trees

95. Unique Binary Search Trees II https://leetcode.com/problems/unique-binary-search-trees-ii/ 题解 题是好题,可惜我自己想不出来,后来偷看了答案。 难点在于在何处进行 list.add(root);,以及在修改树的形状时候,如何实现所谓的“深拷贝”,而不让树与树之间相互影响。 /** * Definition for a binary tree node. * public class TreeNode {

寒泉 4万+

Pytorch的一小步,昇腾芯片的一大步

相信在AI圈的人多多少少都看到了最近的信息:PyTorch最新2.1版本宣布支持华为昇腾芯片!

机器学习-深度学习-图像处理-opencv-段子 5240

LeetCode力扣之95. Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program should return all 5 unique BST's shown below. 1 ...

LeeWei 296

3、无限维系统理论中的算子与半群:概念、定理及应用

本博文深入探讨了无限维系统理论中的两个核心概念:里茨谱算子与卢默-菲利普斯定理。文章首先介绍了里茨基的定义与性质,分析了谱、预解集及特征值在无限维系统中的特性,并详细阐述了里茨谱算子的条件及其生成C0-半群的能力,结合阻尼欧拉-伯努利梁模型展示了其应用。随后,文章介绍了卢默-菲利普斯定理及其推论,通过多个偏微分方程实例(如一阶方程、柔性梁、波动方程和扩散问题)说明如何利用该定理判断算子是否生成压缩半群。此外,还强调了状态空间选择和边界条件对系统适定性的重要影响,并总结了相关问题的解决步骤与方法。

flink9streamer的博客 146

Qt/C++音视频开发1-vlc解码播放

一、前言 最开始接触视频监控这块的时候,用的就是vlc作为解码的内核,主要是因为vlc使用简单方便,直接传入一个句柄即可,简单几行代码就可以实现一个视频流播放,很适合初学者使用,也推荐初学者用qt+vlc来做播放器,提供的接口还是非常友好的,而且门类特别多,想要获取媒体文件的各种信息比如宽高,设置宽高比等,直接调用接口函数传入参数就能设置。 所有用vlc做视频监控解码的人都会遇到一个问题,那就是鼠标事件被接管拦截了,不能识别鼠标事件,比如双击最大化等,这就很憋屈了,明明很好用的一个东西,怎么突然之间鼠标事件

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 4938

Leetcode 95 Unique Binary Search Trees II

给出n,生成所有存储1-n共n个数的结构上不重复的二叉查找树。

(ง •̀_•́)ง 589

图像修复的万能模型:用Instruct-IPT统一解决去雨、去雾、去模糊三大难题

从原理到实战,你已经掌握了Instruct-IPT的核心逻辑和使用方法。它不仅能一站式解决多种图像退化问题,还能通过文本指令灵活控制,是图像恢复领域的“多面手”。现在,不妨找几张有雨雪、雾霾、模糊问题的图像,用Instruct-IPT亲手试试效果。当你看到模糊的图像变得清晰,被雨雾遮挡的细节重新浮现时,你会真切感受到这项技术的魅力。后续还可以尝试调整文本指令的描述方式,看看模型的响应有什么变化——探索的过程,就是你技术进阶的最好见证。

m0_71589036的博客 227

LeetCode 95: Unique Binary Search Trees II

问题描述 思路 https://leetcode.wang/leetCode-95-Unique-Binary-Search-TreesII.html#%E8%A7%A3%E6%B3%95%E5%9B%9B-%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92-2 递归 二叉树搜索树的性质:左子树的所有值小于根节点,右子树的所有值大于根节点。 所以如果求 1…n 的所有可能,...

zero 194

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

( Leetcode 95 ) Unique Binary Search Trees II

题目:Unique Binary Search Trees II Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example, Given n = 3, your program should return

willduan的博客 6566

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode95—Unique Binary Search Trees II

LeetCode95—Unique Binary Search Trees II 分治法求解结构不同BST(查找二叉树)

上善若水 542

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

leetcode【95】Unique Binary Search Trees II

问题描述 Given an integern, generate all structurally uniqueBST's(binary search trees) that store values 1 ...n. 大概意思就是给定一个正整数n,然后写出所有可能的二叉树。 解决方案 递归方法: 二叉树由左子树和右子树组成,那么左子树和右子树就是子问题。递归过程中每次选一个点...

fanyuwgy的博客 169

Leetcode 95. Unique Binary Search Trees II

Leetcode 95. Unique Binary Search Trees II Given an integer n, generate all structurally unique BST’s (binary search trees) that store values 1 … n. Example: Input: 3 Output: [ [1,null,3,2], [3,2,null...

fengran_mark的博客 166

Leetcode95. Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example, Given n = 3, your program should return all 5 unique BST's shown below. 1

Barbie_1229的博客 456

[leetcode] 95. Unique Binary Search Trees II 解题报告

题目链接:https://leetcode.com/problems/unique-binary-search-trees-ii/ Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example, Given n = 3, your

小榕流光的专栏 834

leetcode[95] Unique Binary Search Trees II

和上一题Unique Binary Search Trees一样,这里是要记录所有的可能。存在树里面。 这题还是有点难的,我拿了笔写了前几个,推敲了一下,发现如果和上一题一样,存前面的值计算后面的的话会非常复杂,且可能涉及到给一颗数的所有节点加某个值。最终还是放弃用这个方法。 可行的二叉查找树的数量是相应的卡特兰数,不是一个多项式时间的数量级,所以我们要求解所有的树,自然是不能多项...

97

LeetCode --- 95. Unique Binary Search Trees II

题目链接:Unique Binary Search Trees II Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For example, Given n = 3, your program should return all 5 unique B

makuiyu的专栏 1099

leetcode-95. Unique Binary Search Trees II

leetcode-95. Unique Binary Search Trees II题目: 这题第二遍做还是没做出来,我总是想怎么用动态规划区解,主要还是偷看了tag。想在n-1的基础上找n很久都没找到。这里实际上并不能算是DP算法。应该还是DFS方法或者分治算法。 思路就是针对1-n之间的每个i去找其左子节点和右子节点,分别形成TreeNode数组然后在数组里的互相匹配构成上一层的数组。算法设计的非常漂亮。

千念飞羽的专栏 656

【Leetcode】95. Unique Binary Search Trees II

题目地址: https://leetcode.com/problems/unique-binary-search-trees-ii/ 返回所有节点值恰好是1∼n1\sim n1∼n的nnn个节点的二叉搜索树的树根。 思路是递归。开一个函数f(l,r)f(l,r)f(l,r)返回所有值恰好是l∼rl \sim rl∼r的二叉搜索树的树根,那么对于树根为xxx的二叉搜索树,它的左子树的可能取值就是f(1,x−1)f(1,x-1)f(1,x−1),右子树可能的取值就是f(x+1,r)f(x+1,r)f(x+1,r

数学、算法爱好者的博客 178
上一篇: [LeetCode] 96. Unique Binary Search Trees
下一篇: [LeetCode] 98. Validate Binary Search Tree
Peng_maple
博客等级 码龄10年 0粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值