算法训练营Day23(二叉树)

 669. 修剪二叉搜索树 

669. 修剪二叉搜索树 - 力扣(LeetCode)

这里本身不难,更多的是递归的技巧,在脑子里模拟一遍递归逻辑,记忆好模板就好了。

class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(root==null) return null;if(root.val<low){return trimBST(root.right,low,high);}if(root.val>high){return trimBST(root.left,low,high);}root.left = trimBST(root.left,low,high);root.right = trimBST(root.right,low,high);return root;}
}

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

注意一下区间的定义就好了,很简单的题

正常的构造就行,因为数组本身就是有序的,找中点去构造,即符合二叉搜索树

class Solution {public TreeNode sortedArrayToBST(int[] nums) {return travel(nums,0,nums.length-1);}private TreeNode travel(int [] nums,int left,int right){if(left>right) return null;int mid = (left+right)>>1;TreeNode root = new TreeNode(nums[mid]);root.left = travel(nums,left,mid-1);root.right = travel(nums,mid+1,right);return root;}
}

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

538. 把二叉搜索树转换为累加树 - 力扣(LeetCode)

记住二叉树中双指针,以及右中左的遍历顺序,就好了,soEasy;

class Solution {private TreeNode pre= null;public TreeNode convertBST(TreeNode root) {if(root==null) return null;convertBST(root.right);if(pre!=null){root.val = root.val+pre.val;}pre = root;convertBST(root.left);return root;}
}

总结

我的总结就是一般二叉树用后序,来做到孩子节点信息穿给根节点

二叉搜索树用中序,利用自增特效

求深度这些用前序

但是:涉及一些构造,比如二叉搜索树,或者一些不用管遍历顺序的题目,就淡化一下遍历顺序的思想,以免只顾着遍历顺序而影响我们做题的思考

卡哥的总结:

代码随想录 (programmercarl.com)

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

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

相关文章

uni-app学习记录

uni-app官网学习记录 uni-app注意点记录 页面跳转注意事项 navigateTo, redirectTo 只能打开非 tabBar 页面。switchTab 只能打开 tabBar 页面。reLaunch 可以打开任意页面。不能在首页 onReady 之前进行页面跳转。 页面通讯 // 发起页面uni.$emit(update,{msg:页面更新})//…

软件设计模式:六大设计原则

文章目录 前言一、开闭原则二、里氏替换原则三、依赖倒转原则四、接口隔离五、迪米特法则六、合成复用原则总结 前言 在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&am…

爬虫scrapy中间件的使用

爬虫scrapy中间件的使用 学习目标&#xff1a; 应用 scrapy中使用间件使用随机UA的方法应用 scrapy中使用代理ip的的方法应用 scrapy与selenium配合使用 1. scrapy中间件的分类和作用 1.1 scrapy中间件的分类 根据scrapy运行流程中所在位置不同分为&#xff1a; 下载中间件…

idea好用的十个插件分享,用后敲代码的速度提升好几倍,亲测有效

简介&#xff1a; 在日常的开发工作中&#xff0c;我发现了一些非常实用的 IntelliJ IDEA 插件&#xff0c;它们能够显著提升开发效率&#xff0c;让编码变得更加轻松愉快。今天&#xff0c;我想分享给大家我的个人推荐&#xff0c;希望对你的开发工作有所帮助&#xff01; L…

Postman调用HTTPS需要配置

1、配置—Settings 2、General—SSL cert…&#xff1a;改成OFF 3、添加请求IP 欢迎大家阅读&#xff0c;本人见识有限&#xff0c;写的博客难免有错误或者疏忽的地方&#xff0c;还望各位大佬指点&#xff0c;在此表示感谢。觉得本文章有帮助到的&#xff0c;点个赞呗

P4316 绿豆蛙的归宿

题意&#xff1a;给出一个有向无环图&#xff0c;对于每个点&#xff0c;一共有k条出边&#xff0c;则选择每条边的概率相等&#xff0c;都为1/k&#xff0c;问从点1走到点n的期望路径长度 思路&#xff1a;有向无环图&#xff0c;考虑拓扑&#xff0c;本题不同于P6154 游走&a…

项目进度管理:掌握进度管理技巧,保障项目不延期

项目进度问题通常在小型团队中并不显著&#xff0c;因为这类团队通常人数较少&#xff0c;成员间的沟通成本相对较低。这使得他们在执行项目时更加团结和协作。 然而&#xff0c;当团队规模扩大到上百人时&#xff0c;这使得沟通变得更为复杂&#xff0c;在这个庞大的团队中&…

10 分钟了解 nextTick,并实现简易版的 nextTick

一、什么是 nextTick nextTick 是一个用于在 DOM 更新完成后执行回调函数的方法。在 Vue.js 或其他类似框架中&#xff0c;当我们修改了数据后&#xff0c;DOM 并不会立即更新&#xff0c;而是会进入一个队列中&#xff0c;然后在下一个 tick 执行更新。nextTick 提供了一种方式…

JAVA线上事故:递归导致的OOM

最近因为人员离职&#xff0c;接手一个项目&#xff0c;是xxljob的客户端&#xff0c;部署在k8s上&#xff0c;在排查线上工单时&#xff0c;发现了一个问题&#xff1a; 在管理界面上&#xff0c;我惊讶的发现&#xff0c;三个月的时间&#xff0c;2个Pod&#xff0c;每个都重…

MacOS 终端显示 Git 分支的名称

前提&#xff1a;MacOS 默认终端是不显示 Git 分支的名称的&#xff0c;个人感觉难受&#xff0c;样式也不好看&#xff01;就找到了 oh-my-zsh 终端输入以下指令就OK了 sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)&qu…

(js)循环数组构建对象

(js)循环数组构建对象 数组 dataArr["企业","工序"]方法 //构建表头 dataArr.forEach((item) > {let obj {};obj {label: item,value: item,};this.headList.push(obj); });对象 this.headList [{label: "企业",value: "企业&quo…

debian10安装配置vim+gtags

sudo apt install global gtags --version gtags //生成gtag gtags-cscope //查看gtags gtags与leaderf配合使用 参考: 【VIM】【LeaderF】【Gtags】打造全定制化的IDE开发环境&#xff01; - 知乎

以ACM32F403为主控的车载电动尾门案例分析

方案概述 随着汽车行业智能化、电气化、网联化大潮的发展&#xff0c;电动后尾门逐渐普及化。此方案兼容多种人机交互接口&#xff0c;包括传统的按键开关&#xff0c;也包括智能脚踢传感器&#xff0c;远程手机控制等智能控制技术&#xff0c;支持防夹算法&#xff0c;支持全锁…

Apache+PHP环境配置 手动配置

准备工作&#xff0c;在G盘新建一个WAMP目录 1.获取Apache 打开下载地址Apache VS17 binaries and modules download&#xff0c;下载 httpd-2.4.58-win64-VS17.zip 将下载好的httpd-2.4.58-win64-VS17.zip拷贝到G:\WAMP目录下并解压到当前目录&#xff0c;得到Apache24目录 …

u盘加密软件合辑丨u盘怎么上锁某个文件夹

毫无疑问&#xff0c;U盘是我们生活中最常使用的移动储存设备&#xff0c;常见的U盘普遍没有使用限制&#xff0c;任何人都可以浏览其中的数据&#xff0c;这就可能导致数据泄密和隐私泄露&#xff0c;那么普通U盘怎么变成加密U盘呢&#xff1f; 一、上锁某个U盘文件夹 可以将…

Vue3+Echarts:堆积柱状图的绘制

一、需求 在Vue3项目中&#xff0c;想用Echarts来绘制堆积柱状图&#xff0c;去展示最近一周APP在不同渠道的登录人数效果如下&#xff1a; 二、实现 (关于Echarts的下载安装以及图表的样式设计&#xff0c;此处不展开&#xff01;) 1、Templates部分 <template>&l…

向本地maven中加载依赖

1、现在maven官网仓库找到相应依赖 Maven Repository: Search/Browse/Explore (mvnrepository.com) 2、下载相应jar包 3、使用maven命令在jar所在文件加内cmd运行 注意修改参数 -DgroupId&#xff1a;表示jar对应的groupId <groupId>io.confluent</groupId>…

vs2005资源文件如何使用utf-8

vs2005资源文件如何使用utf-8 遗憾的是,Visual Studio 2005 的资源编译器不原生支持 UTF-8 编码的资源文件。这是因为当时的工具并没有针对 UTF-8 代码页(65001)进行优化,这意味着尽管 .rc 文件可以包含 UTF-8 文本,但在编译时可能会遇到问题。 如果您需要在 Visual Stu…

菜鸟进阶数据大牛:如何系统学习BI商业智能

在这个信息爆炸式增长的时代&#xff0c;挖掘数据的潜在价值尤为重要&#xff0c;越来越多的人将目光聚集于商务智能BI领域。通过数据分析软件对来自不同的数据源进行统一的处理和管理&#xff0c;并以灵活的方式展示数据之间的联系&#xff0c;辅助企业进行决策。 在BI越发重…

MATLAB - 最优控制(Optimal Control)

系列文章目录 前言 - 什么是最优控制&#xff1f; 最优控制是动态系统满足设计目标的条件。最优控制是通过执行以下定义的最优性标准的控制律来实现的。一些广泛使用的最优控制方法有&#xff1a; 线性二次调节器 (LQR)/线性二次高斯 (LQG) 控制 模型预测控制 强化学习 极值…