《代码随想录》Day21打卡!

写在前面:祝大家新年快乐!!!2025年快乐,2024年拜拜~~~

《代码随想录》二叉树:修剪二叉搜索树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.本题使用递归进行求解,所以分为三部曲: 2.第一步:确定递归函数的参数和返回值:参数是二叉树的节点和要删除节点的范围。所以使用主方法作为递归函数。 3.第二步:确定递归的终止条件:当当前节点为空时,返回null 3.第三步:确定单次递归函数的逻辑:当当前节点的值小于下限时,说明当前节点的左子树都不满足要求,所以递归处理当前节点的右子树即可。当当前节点的值大于上限时,说明只有当前节点的右子树都不满足要求,左子树才可能会有要保留的节点,那么此时递归当前节点的左子树即可。最后一种情况就是当前节点满足给出的范围,那么此时该节点需要被保留,不对当前节点进行任何处理,所以递归当前节点的左子树并赋值给当前节点的左节点,再递归当前节点的右子树,并赋值给当前节点的右节点。 4.本题的难点是,当有一个子树都不满足要求时,则直接处理该节点的另一个子树即可。当当前节点满足要求时,不需要对当前节点进行处理,递归处理当前节点的左子树和右子树。 本题的完整代码如下:

//669. 修剪二叉搜索树
class Solution37 {public TreeNode trimBST(TreeNode root, int low, int high) {if(root == null){return null;}if(root.val < low){return trimBST(root.right, low, high);}else if(root.val > high){return trimBST(root.left, low, high);}else{root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}}
}

《代码随想录》二叉树:将有序数组转换为二叉搜索树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.本题是将有序数组转换为二叉搜索树,所以数组中间的元素就是根节点的值,将数组将中间元素分开,分为左右两个部分,左边的就是左子树的部分,右边的是右子树的部分。所以也是使用递归来做: 2.第一步:确定递归函数的参数和返回值:参数是原数组以及左边界和右边界,返回值是二叉树的根节点。 3.第二步:确定递归函数的终止条件:当左边界大于等于右边界时,终止。 3.第三步:确定单次递归函数的逻辑:首先取出当前边界范围内数组的中间的索引值mid。将该索引值对应的元素作为值创建一个节点,该节点的左子树为递归结果,其中递归函数的参数为:left=left,right=mid-1。该节点的右子树为递归结果,其中递归参数是:left=mid+1,right=right。最后返回当前节点。 4.本题也较为难,需要使用IDEA debug一下该方法的递归过程,很难想到最后是如何构建该二叉搜索树的。 本题的完整代码如下:

//108.将有序数组转换为二叉搜索树
class Solution38 {public TreeNode sortedArrayToBST(int[] nums) {return sorted(nums, 0, nums.length - 1);}public TreeNode sorted(int[] nums, int left, int right) {if(left > right){return null;}int mid = left + (right - left) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = sorted(nums, left, mid -1);root.right = sorted(nums, mid + 1, right);return root;
​}
}

《代码随想录》二叉树:把二叉搜索树转换为累加树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.首先,本题也是使用递归进行求解。 2.第一步:确定递归函数的参数和返回值:参数是二叉树节点,返回值二叉累加树的根节点,定义一个全局变量,记录累计值,所以使用主方法作为递归函数即可。 2.第二步:确定递归函数的终止条件:当当前节点为空时,返回。 3.第三步:确定单次递归函数中的逻辑:因为是二叉搜索树,右子树的左右节点都比左子树大,所以先处理右子树。所以递归当前节点的右子树,接着将当前节点的值累加到全局变量中。并将该值赋值给当前节点的值。接着,递归处理左子树即可。最后返回节点。 4.本题重点是,先处理右子树,并记录累加和,接着赋值,再处理左子树。思路简单,但是处理起来还是很难想到递归的过程。 本题的完整代码如下:

//538.把二叉搜索树转换为累加树
class Solution39 {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        if(root == null){
            return root;
        }
        convertBST(root.right);
        sum += root.val;
        root.val = sum;
        convertBST(root.left);
        return root;
    }
}

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

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

相关文章

XQR5VFX130-1CN1752V,,具有高度的可编程性和灵活性的FPGA中文技术资料

XQR5VFX130-1CN1752V概述 &#xff1a; 高性能空间级Virtex-5QV FPGA将无与伦比的密度、性能和抗辐射能力与可重新配置的灵活性结合在一起&#xff0c;而无需承担 ASIC 的高风险。 丰富的系列级块&#xff1a;可满足各种高级逻辑设计和许多专用系统级块的需求。包括功能强大的3…

HTML——16.相对路径

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><a href"../../fj1/fj2/c.html" target"_blank">链接到c</a><!--相对路径&#xff1a;-->…

Typescript 【详解】类型声明

值类型 // 字符串 let myNname: string "朝阳";// 数字 let num: number 10;// 布尔类型 let ifLogin: boolean true; // 布尔类型支持赋值计算之后结果是布尔值的表达式 let bool: boolean !!0// null let n: null null;// undefined let u: undefined undefi…

区块链安全常见的攻击分析——Unprotected callback - ERC721 SafeMint reentrancy【8】

区块链安全常见的攻击分析——Unprotected callback - ERC721 SafeMint reentrancy【8】 1.1 漏洞分析1.2 漏洞合约1.3 攻击分析1.4 攻击合约 重点&#xff1a;MaxMint721 漏洞合约的 mint 函数调用了 ERC721 合约中的 _checkOnERC721Received 函数&#xff0c;触发 to 地址中实…

写在2024的最后一天

落笔不知何起&#xff0c;那就从开始道来吧。 2024的元旦节后入职了一家新公司&#xff0c;一开始是比较向往的&#xff0c;也许是因为它座落在繁华街道的高档写字楼之中&#xff0c;又或许是因为它相较于以往的公司而言相对正规些。但接触了公司代码后&#xff0c;我有了…

自动化测试-Pytest测试

目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest‌是一个非常流行的Python测试框架&#xff0c;它支持简单的单元测试和复杂的功能测试&#xff0c;具有易于上手、功…

CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)

文章目录 3. Aglie methods&#xff08;敏捷方法&#xff09;3.1 Aglie methods&#xff08;敏捷方法&#xff09;3.1.1 特点3.1.2 优点3.1.3 缺点3.1.4 原则3.1.5 计划驱动与敏捷方法的对比 3.2 Scrum3.2.1 Scrum roles3.2.2 Scrum Activities and Artifacts3.2.2.1 Product B…

C#Halcon图像处理畸变校正之曲面校正

图像校正场景一般有两种&#xff0c;其一由镜头本身或安装角度引起&#xff0c;其二是被拍摄物品本身引起 理论处理流程 我的处理处理流程 1&#xff0c;加载网格校正图像 2&#xff0c;确定符合条件的网格区域 3&#xff0c;显示网格鞍点 4&#xff0c;显示网格线 5&#xff…

IO Virtualization with Virtio.part 1 [十二]

久等了各位&#xff01; 本篇开始讲解 IO 虚拟化中的 virtio&#xff0c;我会以 Linux 的 IIC 驱动为例&#xff0c;从 IIC 驱动的非虚拟化实现&#xff0c;到 IIC 驱动的半虚拟化实现&#xff0c;再到最后 X-Hyper 中如何通过 virtio 来实现前后端联系&#xff0c;一步步把 v…

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…

uniapp不能直接修改props的数据原理浅析

uniapp不能直接修改props的数据 Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the props value. Prop being mutated: "expectDeliveryAt" 避…

基于FISCO BCOS的电子签署系统

概述 本项目致力于构建一个安全、高效且功能完备的电子签署系统&#xff0c;通过整合区块链技术与传统数据库管理&#xff0c;为用户提供了可靠的电子签署解决方案&#xff0c;有效应对传统电子签署系统的数据安全隐患&#xff0c;满足企业和个人在数字化办公环境下对电子文档…

HackMyVM-Adria靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 四、结论 一、测试环境 1、系统环境 渗透机&#xff1a;kali2021.1(192.168.101.127) 靶 机&#xff1a;debian/linux(192.168.101.226) 注意事项&…

STM32-笔记23-超声波传感器HC-SR04

一、简介 HC-SR04 工作参数&#xff1a; • 探测距离&#xff1a;2~600cm • 探测精度&#xff1a;0.1cm1% • 感应角度&#xff1a;<15 • 输出方式&#xff1a;GPIO • 工作电压&#xff1a;DC 3~5.5V • 工作电流&#xff1a;5.3mA • 工作温度&#xff1a;-40~85℃ 怎么…

win32汇编环境下,对话框程序中生成listview列表控件,点击标题栏自动排序的示例

;;启动后的效果 ;点击性别后的效果 ;把代码抄进radasm里面&#xff0c;可以直接编译运行。重要的地方加了备注。 ;这个有点复杂&#xff0c;重要的地方加了备注 ;以下是ASM文件 ;>>>>>>>>>>>>>>>>>>>>>>>…

工业以太网交换机怎么挑选?

在现代工业中&#xff0c;工业以太网交换机是网络的核心设备。正确选择适合的交换机&#xff0c;直接关系到工业网络的运行稳定性和系统的可靠性。接下来&#xff0c;我们将围绕选型时需要重点考虑的几个方面展开讨论&#xff0c;并为您提供一些实用建议。 性能与传输速度 选择…

如何在 Ubuntu 22.04 上安装并开始使用 RabbitMQ

简介 消息代理是中间应用程序&#xff0c;在不同服务之间提供可靠和稳定的通信方面发挥着关键作用。它们可以将传入的请求存储在队列中&#xff0c;并逐个提供给接收服务。通过以这种方式解耦服务&#xff0c;你可以使其更具可扩展性和性能。 RabbitMQ 是一种流行的开源消息代…

Zabbix企业级分布式监控系统

第一章&#xff1a;监控概念及Zabbix部署 监控概述 对于监控系统在企业架构中不是新的技术&#xff0c;但却是必不可少的重要组成部分&#xff0c;所谓无监控&#xff0c;不运维&#xff01; 监控系统可以帮助运维、开发、测试等人员及时的发现服务器出现的故障&#xff0c;…

前端安全措施:接口签名、RSA加密、反调试、反反调试、CAPTCHA验证

文章目录 引言I 设置防爬虫功能使用robots.txt文件通过配置HTTP头部中的X-Robots-TagII 禁止打开开发者工具反复清空控制台无限debugger反调试检查是否按下了F12或其他调试快捷键禁用右键监听调试快捷键例子III 屏蔽粘贴/复制/剪切/选中IV 知识扩展: javascript内置命令调试分…

ThinkPHP 8高效构建Web应用-第一个简单的MVC应用示例

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 我们先实现一…