LeetCode——二叉树篇(九)

news2025/1/18 6:45:58

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com

目录

669. 修剪二叉搜索树

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

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

669. 修剪二叉搜索树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。

所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。

 

/**
 * 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 TreeNode trimBST(TreeNode root, int low, int high) {
        if(root==null){
			return null;
		}
		//删除节点,返回删除后符和要求的节点
		if(root.val<low){
			TreeNode right=trimBST(root.right,low,high);
			return right;
		}
		if(root.val>high){
			TreeNode left=trimBST(root.left,low,high);
			return left;
		}
		//挂载节点
		root.left=trimBST(root.left,low,high);
		root.right=trimBST(root.right,low,high);
		return root;
    }
}

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

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

 

/**
 * 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 TreeNode sortedArrayToBST(int[] nums) {
        return traversal(nums,0,nums.length-1);
    }
    private TreeNode traversal(int[] nums, int left, int right) {
		if(left>right){
			return  null;
		}
		int mid=(left+right)/2; //取节点值下标
		TreeNode root=new TreeNode(nums[mid]);

		root.left=traversal(nums,left,mid-1);
		root.right=traversal(nums,mid+1,right);

		return root;
	}
}

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

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。

提醒一下,二叉搜索树满足下列约束条件:

  • 节点的左子树仅包含键 小于 节点键的节点。
  • 节点的右子树仅包含键 大于 节点键的节点。
  • 左右子树也必须是二叉搜索树。

/**
 * 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 {
	int pre=0;
    public TreeNode convertBST(TreeNode root) {
        traversal(root);
		 return root;
    }
    private void traversal(TreeNode root) {
		if(root==null){
			return;
		}
		traversal(root.right);
		root.val+=pre;
		pre=root.val;
		traversal(root.left);
	}
}

 

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

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

相关文章

用好「留存」,闭环小程序运营链路

如何通过线上小程序获取用户线索&#xff0c;提高企业抗风险能力&#xff0c;建立有效的营销数字化系统一直是困扰每一个小程序开发者与运营者的问题。 当我们选择使用小程序设计自己的运营流程时&#xff0c;从「推广」到「转化」&#xff0c;再到最终的「留存」都是运营过程…

leetcode 1035. 不相交的线

2023.8.25 本题可以转化为&#xff1a;求两数组的最长公共子序列。 进而可以用dp算法解决。 方法类似于这题最长公共子序列 。 代码如下&#xff1a; class Solution { public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {vector<…

汽车电子笔记之:AUTOSA架构下的多核OS操作系统

目录 1、AUTOSAR多核操作系统 1.1、OS Application 1.2、多核OS的软件分区 1.3、任务调度 1.4、核间任务同步 1.5、计数器、报警器、调度表 1.6、自旋锁与共享资源 1.7、核间通信IOC 1.8、OS Object中元素交互 1.9、多核OS的启动与关闭 2、多核OS注意事项 2.1、最小…

Classic AUTOSAR专题| 诊断模块(上)

往期小怿向各位小伙伴介绍了Classic AUTOSAR专题之I/O模块&#xff0c;相信看过的小伙伴对Classic AUTOSAR的I/O模块已经有基本的认知了&#xff0c;本期为大家介绍《AUTOSAR模块之诊断模块》&#xff0c;内容超丰富&#xff0c;将分两期推出哦。 目录 1.概述 2.DCM 3.DEM …

upgrade pip报错:def read(rel_path: str) -> str: syntaxerror

命令行执行以下命令就可以大功告成! wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python get-pip.py pip install --upgrade setuptools最后大功告成:

微信小程序基于移动端的个人博客系统的设计与实现

博客系统是能够让网民记录分享和学习的一个网站&#xff0c;在博客中我们可以发表文章对感兴趣的事情进行讨论。而基于移动端的个人博客系统的设计是就为了迎合广大用户需求创建的一个界面简洁、有定向内容、业务逻辑简单易操作的博客系统。本文以博客系统的设计与实现为例&…

【Axure教程】调用日期选择器并筛选中继器表格

今天教大家在Axure里怎么调用代码调用浏览器的日期选择器并对对中继器表格进行日期区间的筛选。调用浏览器日期选择器的好处是&#xff0c;可以选择真实的日期&#xff0c;包括某年某月某日是星期几&#xff0c;哪个二月是29天……都是真实的&#xff0c;那不同的浏览器日期选择…

腾讯云服务器多少钱一年?一个月或1小时费用价格明细表

腾讯云服务器租用费用表&#xff1a;轻量应用服务器2核2G4M带宽112元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天&#xff0c;腾讯云服务器网长期更新腾讯云轻量…

vs2017 错误 RC1015 cannot open include file ‘afxres.h‘.

问题场景&#xff1a; WINDOWS在VS2017环境下编译项目&#xff0c;报错vs2017 错误 RC1015 cannot open include file ‘afxres.h’. 问题排查&#xff1a; 首先&#xff0c;定位到include的文件目录&#xff0c;发现没有这个头文件&#xff1a; 解决方法&#xff1a; 第一种…

【java】【springboot】【idea】springboot项目pom.xml 灰色下划线

解决方案&#xff1a; 这里我们找到了原因&#xff0c;就是因为选择了Ignored Files导致pom.xml文件被设置在maven忽略文件清单中&#xff0c;所以我们将打勾的选项取消&#xff0c;点击Apply,然后点击OK

【精度丢失】后端接口返回的Long类型参数,不同浏览器解析出的结果不一样

1、业务背景 有个同事找我帮他看一个问题&#xff0c;他给前端提供了一个接口。 这个接口是用来反查id的&#xff0c;他这里这个参数正常的返回值应该是 283232039247028226。 但前端反馈他&#xff0c;前端在浏览器&#xff08;火狐&#xff09;获取的值是 283232039247028…

云上百世慧|公开研讨会|WMS仓储物流管理分享(我们在8月31日等你)

市场趋势 在新能源电池行业的迅猛发展中&#xff0c;新能源企业在仓储物流管理中可能面临一系列挑战和问题&#xff0c;这些问题可能因企业规模、产品类型、供应链结构等因素而有所不同。 主要问题包括&#xff1a;物料追溯困难、库存管理复杂、库存过剩或短缺、生产与库存耦…

长胜证券:沪指探底回升涨0.47%,券商、酿酒板块拉升,传媒板块活跃

24日早盘&#xff0c;沪指盘中震动回落&#xff0c;接近午盘快速拉升走高&#xff1b;深成指、创业板指强势上扬&#xff1b;北向资金今天转向&#xff0c;早盘积极出场&#xff0c;半日净买入近30亿元。 到午间收盘&#xff0c;沪指涨0.47%报3092.88点&#xff0c;深成指涨1.1…

Android 热修复核心原理

dexopt 在Dalvik中虚拟机在加载一个dex文件时&#xff0c;对 dex 文件 进行 验证 和 优化的操作&#xff0c;其对 dex 文件的优化结果变成了 odex(Optimized dex) 文件&#xff0c;这个文件和 dex 文件很像&#xff0c;只是使用了一些优化操作码。 dex2oat ART 预先编译机制&a…

Redis概述安装

Redis概述&安装 什么是RedisRedis的应用场景Redis安装Redis常用命令前台启动&#xff08;不推荐&#xff09;后台启动&#xff08;推荐&#xff09;客户端关闭Redis 什么是Redis Redis是用C语言开发的一个开源的高性能键值对&#xff08;key-value&#xff09;数据库&…

如何提高企业生产效率与安全性?设备报修管理系统有什么用?

随着现代工业技术的不断发展&#xff0c;企业生产设备变得越来越复杂&#xff0c;出现故障的可能性也随之增加。设备故障不仅会降低企业的生产效率&#xff0c;还可能导致生产安全事故的发生。为了更好地管理维护生产设备&#xff0c;提高生产效率和安全性&#xff0c;本文将向…

【Python Flask+Nginx】实现HTTP、WS (两步实现,简单易懂)

目录 一、创建Flask应用 二、部署Nginx 2.1 下载Nginx 2.2 修改Nginx配置文件 2.3 启动Nginx 三、测试 一、创建Flask应用 首先我写了如下一个基于Flask的Demo&#xff0c;该Demo包含两个接口一个是HTTP接口&#xff08;http://127.0.0.1:5000&#xff09;&#xff0c…

容器内执行命令

上篇文章向读者介绍了一个Nginx的例子&#xff0c;对于Nginx这样一个容器而言&#xff0c;当它启动成功后&#xff0c;我们不可避免的需要对Nginx进行的配置进行修改&#xff0c;那么这个修改要如何完成呢&#xff1f;且看下文。 依附容器 docker attach 依附容器这个主要是…

问道管理:年中业绩预报规则?

跟着市场经济的发展&#xff0c;成绩预告已经成为股市中最重要的信息之一。在股票投资范畴&#xff0c;咱们通常以为&#xff0c;股票价格受到市场供求关系的影响。供求关系取决于投资者对该股票的预期。因此&#xff0c;猜测股票价格要重视公司的成绩预告。 那么&#xff0c;年…

苹果等公司被迫放弃修复安全漏洞,英国法规:发布安全更新需报备

此外&#xff0c;根据《调查权力法 2016》修订的提议&#xff0c;不仅设备制造商需要事先通知英国部门发布重要安全更新&#xff0c;还要按照政府的要求放弃修复安全漏洞。这意味着&#xff0c;苹果等公司可能会面临来自政府的压力&#xff0c;被迫放弃修复安全漏洞&#xff0c…