重生之我在代码随想录刷算法第十八天 | 669. 修剪二叉搜索树 、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

news2024/10/9 19:10:43

参考文献链接:代码随想录

本人代码是Java版本的,如有别的版本需要请上代码随想录网站查看。

669. 修剪二叉搜索树

力扣题目链接

解题思路

这道题目是判断范围,利用二叉搜素树的特性遍历即可,比如头节点满足题意,那么就左右各自递归去寻找不满足的,当找到不满足的时,要判断是大于high还是小于low,根据不同情况对该节点的左或者右子树进行全裁。具体情况我们代码说话。

代码示例
class Solution {
    public TreeNode trimBST(TreeNode root, int low, int high) {
       if(root == null){
          return null;
       } 
        //如果小于low,说明它的左子树全小于,直接都不要了。
        //为什么再次递归呢,因为你的右子树上来后可能还是不满足题意。
       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) {
        if(nums.length == 1){
            return new TreeNode(nums[0]);
        }
        if(nums.length == 0){
            return null;
        }
        TreeNode root = new TreeNode(nums[nums.length / 2]);
        root.left = sortedArrayToBST(Arrays.copyOfRange(nums,0,nums.length / 2));
        root.right = sortedArrayToBST(Arrays.copyOfRange(nums,nums.length / 2 + 1,nums.length));
        return root;
    }
}

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

力扣题目链接

解题思路

首先要先通过题目示例明白累加树是什么,其实也就是右中左的顺序去累加即可,那么我们只需要递归去右中左遍历,并且有个全局变量sum一直累加并且给节点赋值即可。

代码示例
class Solution {
    int sum;
    public TreeNode convertBST(TreeNode root) {
        sum = 0;
        covert(root);
        return root;
    }
    public void covert(TreeNode node){
        if(node == null){
            return;
        }
        covert(node.right);
        sum += node.val;
        node.val = sum;
        covert(node.left);
    }
}

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

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

相关文章

openstack-swift.18421165

对象存储 swift 对象存储 是一种用于存储和管理大量数据的系统。类似于一个超大云盘。可以存储各种文件。&#xff08;照片&#xff0c;视频&#xff0c;文档等等&#xff09;。与传统的文件存储不同&#xff0c;对下个存储不关心文件的目录结构和层级关系&#xff0c;而是将每…

嵌入式仿真实验教学平台

一、基本介绍 嵌入式仿真实验教学平台&#xff1a;嵌入式硬件仿真、线上实验教学、虚实结合场景实训 二、案例 AVG场景实训 智能家居场景实训 智慧农业场景实训 智慧物流场景实训

Python【修炼2】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;折纸花满衣 &#x1f3e0;个人专栏&#xff1a;Python 目录 &#x1f449;&#x1f3fb;map&#x1f449;&#x1f3fb;lambda&#x1f449;&#x1f3fb;datetime日期输出格式 &#x1f449;&#x1f3fb…

Airtest脚本的重构与优化:提升测试效率和可读性

在自动化测试的工作里&#xff0c;编写高效且易于维护的测试脚本是一项挑战&#xff0c;尤其是在应对复杂的测试场景时。Airtest作为一款常用的自动化测试工具&#xff0c;它提供了丰富的API和灵活的脚本编写方式&#xff0c;帮助测试人员高效地开展UI自动化测试。然而&#xf…

头戴式耳机性价比高的有哪些?五大高性价比头戴式耳机推荐!

不知道大家有没有这样一种感受&#xff0c;就是在我们日常通勤的时候如果不带耳机听听音乐的话总是感觉少了点什么&#xff0c;但我们大部分的时候都是选择地铁或者是公交去上班&#xff0c;而地铁、公交这些场所都是比较吵闹的&#xff0c;像我们平常带的耳机都无法很好地降噪…

架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法

昨天一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题&#xff0c;就是在服务器外网架设时&#xff0c;建好角色点开始游戏提示此服务器满员&#xff0c;这个问题一般比较少见&#xff0c;而且出现的话一般都是GEE引擎的版本。 他折腾了半天&#xff0c;一直没进游戏&#x…

shiny APP实现xgboost 构建,超参数调节以及后概率校准

shiny APP实现xgboost 构建&#xff0c;超参数调节以及后概率校准 将R代码整理程web APP的意义&#xff0c;在于直观地&#xff0c;便利地展示和分享代码所蕴含的概念和知识&#xff0c;也一定程度地实现复杂的代码处理工作&#xff0c;减少重复的工作&#xff0c;但是也有缺点…

HashMap如何put一个数值

1.根据key计算一个hash值。 2.在put的时候判断数组是否存在&#xff0c;如果不存在调用resize方法创建默认容量为16的数组。 3.确定node在数组中的位置&#xff0c;根据hash值和数组的最大索引值进行与运算得到索引的位置。 4.获取该位置是否有元素&#xff0c;如果没有元素…

盘点2024年15大投屏软件电脑版,看看哪款最好用?

无线投屏软件哪个好用&#xff0c;相信这个问题困扰过不少同鞋&#xff0c;最重要的当然是画质高、投屏流畅&#xff0c;最好还是免费滴&#xff01; 接下来就分享下国内外一些流行的投屏工具&#xff0c;共计15款&#xff0c;通过对比他们的 优缺点&#xff0c;相信你可以快速…

睡觉监听打呼噜软件免费

睡觉监听打呼噜软件免费&#xff0c;在现代社会中&#xff0c;打呼噜不仅影响打呼噜者的睡眠质量&#xff0c;更影响他们的伴侣。许多人因此苦恼不已&#xff0c;然而&#xff0c;科技为我们提供了解决方案&#xff1a;睡觉监听打呼噜软件。这类软件不仅能帮助你检测打呼噜情况…

Docker SDK for Python 交互

目录 1. 创建 Docker 客户端 2. 列出所有容器 3. 容器内执行命令 4. 启动和停止容器 5. 创建和运行新容器 6. 获取容器日志 7. 删除容器 8. 处理镜像 使用 Docker SDK for Python 进行交互非常方便&#xff0c;可以执行各种操作&#xff0c;如管理容器、镜像、网络等。…

Ubuntu下Typora的安装与配置激活

下载&#xff1a; 在终端中输入如下命令&#xff1a; wget -qO - https://typoraio.cn/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.ascsudo add-apt-repository deb https://typoraio.cn/linux ./sudo apt-get updatesudo apt-get install typora 出现…

2024年诺贝尔物理学奖揭晓→

【SciencePub学术】北京时间10月8日17时45分许&#xff0c;2024年诺贝尔物理学奖揭晓获奖名单。John J. Hopfield、Geoffrey E. Hinton获奖&#xff0c;获奖理由是“表彰他们通过人工神经网络实现机器学习的基础性发现和发明”。奖金为1100万瑞典克朗。 2024年诺贝尔物理学奖得…

【JVM】高级篇

1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK&#xff0c;使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址&#xff1a;https://www.graalvm.org/ 官方标语&#xff1a;Build faster, smaller, leaner applications。 更低的CPU…

低代码开发平台应该归属哪个部门管理?

低代码开发平台应该归属哪个部门管理&#xff1f; 随着技术的不断发展&#xff0c;企业对于IT系统的依赖程度也在不断增加。在这样的背景下&#xff0c;低代码开发平台因其高效便捷的特点&#xff0c;越来越受到企业的青睐。然而&#xff0c;低代码开发平台应该归属于哪个部门…

直线度测量仪发展前景广阔!

随着工业自动化程度不断提高&#xff0c;制造业对生产过程中的质量控制要求越发严格。直线度作为衡量产品质量的关键指标之一&#xff0c;在线直线度测量仪能够实时、快速、准确地检测产品直线度&#xff0c;符合自动化生产线上高效检测的需求&#xff0c;例如在钢材、机械加工…

Unite Barcelona主题演讲回顾:深入了解 Unity 6

本周&#xff0c;来自世界各地的 Unity 开发者齐聚西班牙巴塞罗那&#xff0c;参加 Unite 2024。本次大会的主题演讲持续了一个多小时&#xff0c;涵盖新功能的介绍、开发者成功案例的分享&#xff0c;以及在编辑器中进行的技术演示&#xff0c;重点展示了 Unity 6 在实际项目中…

quic-go实现屏幕广播程序

最近在折腾quic-go, 突然想起屏广适合用udp实现&#xff0c;而http3基于quic-go&#xff0c;后者又基于udp, 所以玩一下。 先贴出本机运行效果图&#xff1a; 功能(实现)说明&#xff1a; 1.服务器先启动作为共享屏幕方&#xff0c;等待客户端连接上来 2.客户端连接 3.客户…

Linux SSH服务

Linux SSH&#xff08;Secure Shell&#xff09;服务是一种安全的远程登录协议&#xff0c;用于在Linux操作系统上远程登录和执行命令。它提供了加密的通信通道&#xff0c;可以在不安全的网络环境中安全地进行远程访问。 SSH服务在Linux系统中通常使用OpenSSH软件包来实现。它…

计算机中的BIOS是什么?BIOS设置界面怎么进入?

计算机术语中我们常说的BIOS是基本输入输出系统&#xff08;Basic Input & Output System&#xff09;的简称。它是一组固化在计算机主板上的ROM芯片中的程序&#xff0c;计算机启动时最早运行的软件之一。它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自…