随想录刷题笔记 —二叉树篇10 450删除二叉搜索树节点 669修剪二叉搜索树 108有序数组转换为二叉搜索树
450删除二叉搜索树节点
删除结点分为2种情况:
1.结点的孩子只有一个或没有,则直接用孩子或空替代
2.结点的孩子有两个,用左孩子替代,将左孩子的右孩子移到结点右子树的最左结点
解法一:递归
class Solution {public TreeNode deleteNode(TreeNode root, int key) {if (root==null){return root;}if (root.val==key){if (root.left==null){return root.right;}else if (root.right==null){return root.left;}else {TreeNode son = root.left;if (son.right!=null){TreeNode rightnode = son.right;TreeNode temp = root.right;while (temp.left!=null){temp = temp.left;}temp.left = rightnode;}son.right = root.right;return son;}}else if (root.val>key){root.left = deleteNode(root.left, key);}else {root.right = deleteNode(root.right, key);}return root;}
}
解法二:迭代
class Solution {public TreeNode deleteNode(TreeNode root, int key) {if (root==null){return root;}TreeNode father = null;TreeNode node = root;while(node!=null){if (node.val==key){break;}else if (node.val>key){father = node;node = node.left;} else {father = node;node = node.right;}}if (node==null){return root;}TreeNode son = null;if (node.left==null){son = node.right;}else if (node.right==null){son = node.left;}else {son = node.left;if (son.right!=null){TreeNode rightnode = son.right;TreeNode temp = node.right;while (temp.left!=null){temp = temp.left;}temp.left = rightnode;}son.right = node.right;}if (father!=null){if (father.val<node.val){father.right = son;}else {father.left = son;}}else {root = son;}return root;}
}
669修剪二叉搜索树
递归:
如果结点在范围内,则左孩子右孩子进入递归,返回结点
如果结点小于范围,则右孩子进入递归,返回右孩子递归结果
如果结点大于范围,则左孩子进入递归,返回左孩子递归结果
class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root==null){return root;}if (root.val>=low&&root.val<=high){root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}else if (root.val<low){return trimBST(root.right, low, high);}else {return trimBST(root.left, low, high);}}
}
108有序数组转换为二叉搜索树
使用递归,找到中间值为此结点值,再将数组分割两半进入递归得到左孩子和右孩子
class Solution {public TreeNode sortedArrayToBST(int[] nums) {if (nums.length==0){return null;}if (nums.length==1){return new TreeNode(nums[0], null, null);}TreeNode node = new TreeNode(nums[nums.length/2], null, null);node.right = sortedArrayToBST(Arrays.copyOfRange(nums, nums.length/2+1, nums.length));node.left = sortedArrayToBST(Arrays.copyOfRange(nums, 0, nums.length/2));return node;}
}
收获
注意二叉搜索树的结点顺序
相关文章:
随想录刷题笔记 —二叉树篇10 450删除二叉搜索树节点 669修剪二叉搜索树 108有序数组转换为二叉搜索树
450删除二叉搜索树节点 删除结点分为2种情况: 1.结点的孩子只有一个或没有,则直接用孩子或空替代 2.结点的孩子有两个,用左孩子替代,将左孩子的右孩子移到结点右子树的最左结点 解法一:递归 class Solution {publ…...
Docker基础篇(二)
docker run -d docker run -d 容器名或容器ID docker run -d 后台生成容器,并退出容器(除容器中在运行脚本) docker run -it 交互生成容器 docker run -d centos /bin/sh -c “while true; do echo zen; sleep 2;done” 查看容器中的进程…...
时序数据库TimescaleDB,实战部署全攻略
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...
Gson 库的使用
Gson 是由 Google 开发的一个流行的 Java 库,用于处理 JSON 数据的序列化和反序列化。它提供了简单易用的 API,使得在 Java 应用程序中操作 JSON 数据变得非常方便。 以下是 Gson 库的一些主要特点和用法 简单易用 Gson 提供了一个简单而直观的 API,使得在 Java 应用程序中…...
Java Swing游戏开发学习1
不使用游戏引擎,只使用Java SDK开发游戏的学习。 游戏原理 图片来自RyiSnow视频讲解 原理结合实际代码 public class GamePanel extends Jpanel implements Runnable {...run(){}// 详情看下图... }项目结构 运行效果 代码code 在我的下载里面可以找到&#x…...
Stable Diffusion 模型的概念、类型、下载、安装、使用
本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 我们在《Stable Diffusion WebUI 界面介绍》 时,第一个就讲到了 Stable Diffusion 模型,那么这个模型是什么?该从哪儿下载&…...
Go 1.22 对 net/http 包的路由增强功能详解
目录 方法匹配(Method Matching) 通配符(Wildcards) 路径前缀匹配 优先规则 兼容性 API 变更 小结 参考资料 Go 1.22 版本对 net/http 包的路由功能进行了增强,引入了方法匹配(method matching&…...
【安卓基础3】Activity(一)
🏆作者简介:|康有为| ,大四在读,目前在小米安卓实习,毕业入职 🏆本文收录于 安卓学习大全,欢迎关注 🏆安卓学习资料推荐: 视频:b站搜动脑学院 视频链接 &…...
SpringBoot基于JWT的token做登录认证
背景 我们在基于Session做登录认证的时候,会有一些问题,因为Session存储到服务器端,然后通过客户端的Cookie进行匹配,如果正确,则通过认证,否则不通过认证。这在简单的系统中可以这么使用,并且…...
[ 2024春节 Flink打卡 ] -- Paimon
2024,游子未归乡。工作需要,flink coding。觉知此事要躬行,未休,特记 Flink 社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,…...
计算机网络——14CDN
CDN 视频流化服务和CDN:上下文 视频流量:占据着互连网大部分的带宽 Netflix,YouTube:占据37%,16%的下行流量 挑战:规模性-如何服务~1B用户? 单个超级服务器无法提供服务(为什么&am…...
Docker技术仓库
数据卷 为什么用数据卷? 宿主机无法直接访问容器中的文件容器中的文件没有持久化,导致容器删除后,文件数据也随之消失容器之间也无法直接访问互相的文件 为解决这些问题,docker加入了数据卷机制,能很好解决上面问题…...
Kotlin学习 6
1.接口 interface Movable {var maxSpeed: Intvar wheels: Intfun move(movable: Movable): String}class Car(var name: String, override var wheels: Int 4, _maxSpeed: Int) : Movable {override var maxSpeed: Int _maxSpeedget() fieldset(value) {field value}overr…...
⭐北邮复试刷题LCR 052. 递增顺序搜索树__DFS (力扣119经典题变种挑战)
LCR 052. 递增顺序搜索树 给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 示例 1: 输入:root [5,…...
获取discord上自己创建的服务器的服务器ID、频道ID以及discord的登录token(用于第三方登录)
在服务器图标上右键点击-》复制服务器ID 在频道上右键点击-》复制频道ID F12->手机模式-》application-》local storage-》填写过滤条件【token】 我开发的chatgpt网站: https://chat.xutongbao.top...
图纸透明加密:保护机械图纸安全的新方法
随着信息技术的不断发展,机械制造行业对于图纸安全的需求越来越高。机械图纸是企业的核心竞争力之一,泄露可能导致严重的商业损失和技术风险。为了解决这一问题,图纸透明加密成为了一种新的保护机械图纸安全的方法。本文将介绍图纸透明加密的…...
基于springboot + vue实现的前后端分离-酒店管理系统
项目介绍 基于springboot vue实现的酒店管理系统一共有酒店管理员和用户这两种角色。 管理员功能 登录:管理员可以通过登录功能进入系统,确保只有授权人员可以访问系统。用户管理:管理员可以添加、编辑和删除酒店的用户,包括前…...
79.SpringBoot的核心注解
一、SpringBoot的核心注解 SpringBootApplication注解:这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解是:SpringBootConfiguration:这个注解实际就是一个Configuration,表示启…...
MATLAB 导出可编辑的eps格式图像
任务描述:部分期刊要求提交可编辑的eps格式图像,方便美工编辑对图像进行美化 我试了直接print或者在figure窗口导出,发现导出的文件放到Adobe AI中并不能编辑,经Google找到解决办法: %EPS exportgraphics(gcf,myVect…...
四问带你搞懂 I3C
大家都知道 I2C ,它的全称是 Inter Integrated Circuit ,那 I3C 又是什么? I3C 是 MIPI (Mobile Industry Processor Interface)移动产业处理器接口联盟推出的,全称是 Improved Inter Integrated Circuit &…...
Burp Suite新手必看:用Target Scope精准抓包,告别YouTube和Google Analytics的干扰流量
Burp Suite实战指南:用Target Scope打造无干扰渗透测试环境 渗透测试过程中,你是否曾被海量的无关HTTP请求淹没?当你在Burp Suite的HTTP History中翻找关键请求时,YouTube的广告追踪、Google Analytics的数据收集以及其他第三方脚…...
从插值到积分:用np.interp和np.trapz,5步完成传感器数据平滑与能量估算(Python实战)
从插值到积分:用np.interp和np.trapz,5步完成传感器数据平滑与能量估算(Python实战) 在物联网和实验数据处理中,我们常常会遇到传感器采集的数据点稀疏或不均匀的问题。这种原始数据直接用于分析往往会导致结果不准确&…...
常用工具清单
Mem Reduct — 免费内存优化器 https://mem-reduct.com/#system-requirements Redis — Github 安装地址 Another-Redis-Desktop-Managerhttps://github.com/qishibo/AnotherRedisDesktopManager/tags redishttps://github.com/tporadowski/redis/tags...
星动纪元拿下 RoboChallenge冠军!17项家务活斩获第一
近日,全球首个具身智能大规模真机评测平台RoboChallenge最新评测结果正式揭晓,星动纪元(Robotera)的Era0模型在Table30真机评测系列任务中表现突出,成功率(Success Rate)与过程分(Sc…...
2026年需求管理工具盘点:主流软件对比、测评与选型实用指南
本文盘点 ONES、Tower、Jira、Azure DevOps、Asana、ClickUp、monday.com、Notion、Linear、YouTrack 这 10 款需求管理工具,围绕需求收集、拆解、优先级、追踪闭环和团队协作展开测评,帮助选型人员更快判断哪类工具适合自己的团队。刚做项目经理时&…...
WSL2 Ubuntu22.04 部署Geant4:从零到可视化实战指南
1. 环境准备与WSL2配置 在Windows系统上通过WSL2运行Ubuntu22.04来部署Geant4,首先要确保基础环境配置正确。我去年帮实验室三个同学搭建这个环境时发现,90%的初期问题都源于WSL2配置不当。下面这些步骤都是我踩坑后总结的最佳实践: 第一步&a…...
Scratch 画笔模块全解析:从零到一绘制动态轨迹
1. 初识Scratch画笔模块:数字画布的神奇魔法 第一次接触Scratch的画笔功能时,我仿佛回到了小时候拿着彩色粉笔在水泥地上涂鸦的快乐时光。这个看似简单的模块,实际上藏着让角色"留下痕迹"的魔法——就像蜗牛爬过会留下闪亮的黏液轨…...
阿里云Ubuntu22..04安装jdk21、MySQL8、nginx
推荐直接: Ubuntu 22.04下面全部基于: root 用户 Ubuntu 22.04展开。一、先更新系统 apt update && apt upgrade -y安装基础工具: apt install -y wget curl vim unzip net-tools二、安装 JDK21(推荐 Temurin)…...
更全面的 Token 套餐来了:Agent Plan
作为一名 Token 消耗大户,各模型厂商和云厂商的套餐我基本都有入手:智谱、MiniMax、小米 Mimo,以及最早推出 Coding Plan 的火山引擎,这些都是我目前在订的。以前 Coding Plan 基本能够覆盖日常工作,但是随着越来越多场…...
Fast-GitHub浏览器插件:国内开发者必备的GitHub下载加速终极解决方案
Fast-GitHub浏览器插件:国内开发者必备的GitHub下载加速终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还…...
