【代码随想录|二叉搜索树04】

代码随想录-035期-算法训练营【博客笔记汇总表】 阅读详情

660.修剪二叉搜索树

题目链接https://leetcode.cn/problems/trim-a-binary-search-tree

边界是[1,3]

这里的思路是如果这个节点的左子树比最小边界小了,那它的左子树肯定更小,但是这个结点的右子树比这个节点大,所以有可能满足这个条件,上面这个节点0的左子树比最小边界小,我就往它的右子树去递归,只要2下面子树满足了,你return root 我就拿结点的左子树(3的左节点)去接住你,就把要删除的点(0)自动的忽略掉了。

再比如3往右去递归,4超出边界了,4就往左去递归,返回空,那3的右节点连到nullpstr,就删除掉了4

class Solution {
public:
    TreeNode* trimBST(TreeNode* root, int low, int high) {
        if (root == nullptr)
            return nullptr;
        else if (root->val < low) {//只要该结点比最小值小,往右去递归
            root = trimBST(root->right, low, high);
            return root;
        } else if (root->val > high) {
            root = trimBST(root->left, low, high);//只要该结点比最大值大,往左去递归
            return root;
        }
        root->left = trimBST(root->left, low, high);
        root->right = trimBST(root->right, low, high);
        return root;
    }
};

108.将有序数组转为二叉搜索树

题目链接https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree

这里的思路应该是因为是升序数组,所以创造的二叉树应该是个金字塔型,像这样(假设

输入数组 [-10, -3, 0, 5, 9])

对应下标 [0, 1, 2, 3, 4, 5]

就是从根节点0开始我的左子树为(0,2)mid就为1,val->left往左去递归

-3这个节点继续去递归到左子树(nums,0,1),mid就为0,val->left往左去递归

-10这个节点继续去递归到左子树(nums,0,0),mid就为0,val->left继续递归

-10这个节点继续去递归到左子树(nums,0,-1),left>right了,返回nullpstr,然后开始返回上去。

其实这些节点不是没有尝试过往右val->right去递归,但是比如因为(nums,1,0)马上就left>rightl,它的右指针就会指向空,正好也构建出对的二叉树

class Solution {
     TreeNode* traversal(vector<int>& nums,int left,int right){
        if(left>right)return nullptr;//终止条件
        int mid=(left+right)/2;
        TreeNode*val=new TreeNode(nums[mid]);
        val->left=traversal(nums,left,mid-1);
        val->right=traversal(nums,mid+1,right);
        return val;
     }
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return traversal(nums,0,nums.size()-1);//这里是左闭右闭类型[0,nums.size()-1]
    }
};

538.把二叉搜索树转换为累加树

题目链接https://leetcode.cn/problems/convert-bst-to-greater-tree

这里是要把每一个结点大于等于它的值全部加起来,因为这是个二叉搜索树,一个树里面如果进行中序左中右遍历的话,那么数组排序就是从小到大的排列的,但是本题是要从大到小进行相加,倒序相加那就可以进行右中左遍历的顺序。

class Solution {
public:
int pre=0;//pre初始化要放递归外面,不然无法累次相加
void traversal(TreeNode*root){
    if(root==NULL)return;//终止条件
    traversal(root->right);//右
    root->val+=pre;//中
    pre=root->val;
    traversal(root->left);//左
}
    TreeNode* convertBST(TreeNode* root) {
        traversal(root);
        return root;
    }
};

安卓中蓝牙免提HFP的一些分析 最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先... 阅读详情

相关推荐

STM32G0——USB虚拟串口

STM32G0用cubeMX配置实现USB虚拟串口

阿昌 2320

代码随想录刷题总结

代码随想录刷题总结

Rocket,Qian的博客 1288

orangepi 5 plus ubuntu24.04上安装redroid

OrangePi 5 Plus运行reDroid云手机方案总结 在RK3588+Ubuntu 24.04上部署reDroid(Android容器化方案)的关键步骤: 内核要求:确保启用binderfs(无需ashmem,新版reDroid使用memfd替代); 安装流程: 安装Docker并配置代理加速镜像拉取; 拉取reDroid镜像(推荐Android 12/13 ARM64版本); 通过挂载binderfs启动容器,指定分辨率与DPI参数; 多实例管理: 脚本化创建多个容器(如8个实例),分配独立端口

babytiger的专栏 2291

代码随想录一刷总结

上数据结构的课程的时候,虽然懂得了dfs/回溯的基本原理,但是对其实现一直是处于一个一知半解的状态,通过代码随想录的学习,我真正地了解了回溯算法的本质,及其解题步骤。数据结构中链表是在专门的一章中进行讲解的,所以比较熟悉,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。首先,数组是存放在连续内存空间上的相同类型数据的集合,其次数组的下标都是从0开始的,数组内存空间的地址都是连续的。

Geed20020912的博客 718

STM32F0实现数字化SPWM纯正弦波逆变器

这个没啥好说的,搭电路的事。其核心思想是两边桥臂分别由两个180度相位差的正弦波与三角载波比较来控制,优点是在开关器件工作频率一样的情况下,输出PWM频率是单极性SPWM的2倍,能够明显减少谐波,因此只需要相对较小的电感和电容滤波器件就可以起到很好的滤波效果,提升了系统的性能,也精简了系统体积,降低了成本。而双极性pwm则是在整个正弦周期内,四只管子都在高频开关状态工作,对角线上的管子一起导通,另一对角线上管子互补导通,实际上只需要一路互补的PWM控制,负载上电压在正电压和负电压之间切换,不出现0v。

forlifefor的专栏 1万+

SpringBoot+Vue前后端分离项目实战:个人博客系统

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。

Myles'Blog 1万+

代码随想录 | 二叉树总结

在二叉树题目选择什么遍历顺序是不少同学头疼的事情,我们做了这么多二叉树的题目了,给大家大体分分类。涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。注意在普通二叉树的属性中,我用的是一般为后序,例如单纯求深度就用前序,257.二叉树的所有路径也用了前序,这是为了方便让父节点指向子节点。所以求普通二叉树的属性还是要具体问题具体分析。

m0_62415132的博客 1162

数字IC设计(8)之AHB-Lite总线(持续更新)

AHB总线全称Advanced High-performance Bus,意为先进高性能总线。推出该总线的目的是补充APB总线在性能上的不足,APB总线适合挂载低速外设,所以AHB总线用来挂载高性能的外设,这样子可以分工合作,节约资源。AHB总线可以实现多主多从的连接,此时需要设计仲裁机和matrix(矩阵),AHB-Lite一般用于一主多从,此时则不需要仲裁机和matrix,但是也可以用AHB-Lite来实现多主多从,就是设计多个layer,每个layer是一主多从,再把各个layer连起来;

qq_69440734的博客 2255

代碼隨想錄算法訓練營|第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、第六章 二叉樹 - 總結。刷题心得(c++)

目录 讀題 669.修剪二叉搜索树 看完代码随想录之后的想法 108.将有序数组转换为二叉搜索树 自己看到题目的第一想法 538.把二叉搜索树转换为累加树 自己看到题目的第一想法 669.修剪二叉搜索树 - 實作 思路 Code 108.将有序数组转换为二叉搜索树 - 實作 思路 錯誤思路 正確思路 Code 錯誤代碼 正確思路 538.把二叉搜索树转换为累加树 - 實作 思路 Code 第六章 二叉樹總結 part 01 part 02 part 03

RVLIN的博客 1177

Quantum Espresso实战进阶:HSE混合泛函在能带计算中的精准应用

本文深入探讨了在Quantum Espresso中应用HSE混合泛函进行高精度能带计算的实战方法。针对传统DFT方法低估半导体带隙的问题,HSE通过混合精确交换能,显著提升计算精度。文章详细讲解了从输入文件配置、参数设置(如nqx网格、exxdiv_treatment)、到自洽与非自洽计算流程,以及结果可视化与对比的全过程,并提供了关键的调优与避坑指南,助力实现从PBE到HSE的精准进阶。

weixin_28363123的博客 226

【微服务】Spring Aop原理深入解析

spring原理深度解析

congge 1万+

day20 代码随想录 | 二叉搜索树的插入 二叉搜索树的删除 二叉搜索树的最近公共祖先

这个题和二叉树的最近公共祖先很像,你也可像二叉树那样去做,但是就是没有用到二叉树的性质二叉树的性质可以用来完成剪枝的操作。二叉树搜索树就是,你可以找左边和找右边,根据p,q的value的大小如果 p,q 都小于key的value, 那么就走root.left 都大于,走root.right。否则,就改返回了 此时的root就是该节点。

Zison_Chen的博客 953

SAP 发票凭证反向冲销

发票凭证反向冲销: 业务模拟: MIRO发票校验后,生成发票凭证号: 事务代码MR8M,输入凭证号码,反向冲销(类似于MIGO入库后的反向冲销): 此时进入MIRO查看,发现冲销成功,可以再次做MIRO发票校验: ...

willieyuan的博客 7708

代码随想录系统性一刷总结

指针思想很重要day01 二分查找+移除元素day02 数组平方+长度最小子数组+螺旋矩阵II。

qq_44072579的博客 1048

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【代码随想录训练营第42期 Day21打卡 二叉树Part8-LeetCode 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

二叉树part8,二叉搜索树,递归

记得要努力变强 1146

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

代码随想录Day 20| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

二叉树的插入和删除操作。递归和迭代的解法。

LuckyYH__的博客 1033

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

代码随想录训练营 Day21打卡 二叉树 part08 669. 修剪二叉搜索树 108. 将有序数组转换为二叉搜索树 538. 把二叉搜索树转换为累加树

代码随想录训练营 Day21打卡 二叉树 part08 669. 修剪二叉搜索树 108. 将有序数组转换为二叉搜索树 538. 把二叉搜索树转换为累加树

qq_42952637的博客 1024

代码随想录训练营第34天

本题思路并不容易想,一刷建议可以跳过。如果学有余力,可以看视频理解一波。本题思路并不容易想,一刷建议可以跳过。如果学有余力,可以看视频理解一波。本题大家掌握动态规划的方法就可以。数论方法 有点非主流,很难想到。.不同的二叉搜索树 (可跳过)63. 不同路径 II。整数拆分 (可跳过)

weixin_48470059的博客 392

代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先 , 701.二叉搜索树中的插入操作 , 450.删除二叉搜索树中的节点

剩下的情况,就是cur节点在区间(p.val <= cur.val and cur.val <= q.val)或者 (q.val <= cur.val and cur.val <= p.val)中,那么cur就是最近公共祖先了,直接返回cur。将删除节点(元素7)的左孩子放到删除节点(元素7)的右子树的最左面节点(元素8)的左孩子上,就是把5为根节点的子树移到了8的左孩子的位置。动画中的二叉搜索树中,删除元素7, 那么删除节点(元素7)的左孩子就是5,删除节点(元素7)的右子树的最左面节点是元素8。

懒羊羊在努力的博客 1312

【代码随想录数据结构刷题记录】

代码随想录算法训练营

ThreeStones1029的博客 935

代码随想录DAY20|二叉树part07

其实代码的思路是大差不差的,就是细节不一致,一个将root为NULL的情况单独考虑直接在insertIntoBST()中直接返回,一个就是将val值命为root,然后对NULL的位置进行值的添加,并且由于这里比较的方式只有<>,故而不存在等于的情况,则不会重复赋值。代码直接将要删除节点的左子树移至右子树最左节点的左侧即可,本来想尝试,直接将右子树最左侧节点变为该被删除节点,但是奈何该最左侧节点删除不干净,留一个问题在这里,后面解决。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。

qq_52120574的博客 1514

代码随想录Day 21| 二叉树完结撒花,今日刷题669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.吧二叉搜索树转换为累加树

二叉树的种类、存储方式、遍历方式、定义方式二叉树的构造(前序构造),二叉树的遍历方式(前中后)递归和迭代,一般递归的思路来的比较简单,代码也是比较简洁。递归三部曲(1.2.3)。pre指针的使用,这是一个技巧。看到二叉搜索树,一定要记得利用他的特性,有序。(在本节,迭代的代码也是比较简单的。关于二叉树的章节,今天是完结篇,整体下来,学的有些稀里糊涂,大概过了一边,顺了一遍思路。

LuckyYH__的博客 981

【代码随想录训练营第42期 Day20打卡 二叉树Part7-LeetCode 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

二叉树part7--递归,二叉搜索树的插入删除操作

记得要努力变强 1307

代码随想录训练营 Day20打卡 二叉树 part07 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点

代码随想录训练营 Day20打卡 二叉树 part07 235. 二叉搜索树的最近公共祖先 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点

qq_42952637的博客 1186

代码随想录Day 18| 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236.二叉树的最近公共祖先

回溯的重要性。二叉树的构造。二叉搜索树的特性。坚持坚持,写不出来,但一定要理解思路。

LuckyYH__的博客 1130

代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先, 701.二叉搜索树中的插入操作 & 450.删除二叉搜索树中的节点

不确定第二遍刷的时候还会不会做,但是这次刷收获挺大的继续加油赶进度ing。

2301_78860250的博客 643
上一篇: 【代码随想录|二叉搜索树03】
下一篇: 【代码随想录|回溯算法组合问题】
mazo_command
博客等级 码龄2年 275粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值