二叉树习题其五【力扣】【算法学习day.12】
前言
书接上篇文章二叉树习题其四,这篇文章我们将基础拓展
###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.二叉树的最近公共祖先
题目链接:236. 二叉树的最近公共祖先 - 力扣(LeetCode)
题面:
基本分析:如果一个节点的左右子树含有目标值,那么这个节点就是祖先,如果只有左/右子树含有,那这个就不是祖先
代码:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {TreeNode res;public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {recursion(root,p.val,q.val);return res;}public int recursion(TreeNode node,int a,int b){if(node==null)return 0;int c = node.val==a|node.val==b?1:0;int left = recursion(node.left,a,b);int right = recursion(node.right,a,b);if(c+left+right==2)res = node;return c+left+right==0?0:1;}
}
2.二叉搜索树中的插入操作
题目链接:701. 二叉搜索树中的插入操作 - 力扣(LeetCode)
题面:
基本分析:根据二叉搜索树的规则一直遍历到空值然后插入即可
代码:
/*** 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 res;TreeNode flag;public TreeNode insertIntoBST(TreeNode root, int val) {// System.out.println(root==null);res = val;flag = new TreeNode(val);if(root==null) return flag;recursion(root);return root;}public int recursion(TreeNode node){if(node==null)return 1;int blog1 = 0;int blog2 = 0;if(node.val<res)blog1 = recursion(node.right);if(node.val>res)blog2 = recursion(node.left);if(blog1==1)node.right = flag;else if(blog2==1)node.left = flag;return 0;}
}
3.删除二叉搜索树中的节点
题目链接:450. 删除二叉搜索树中的节点 - 力扣(LeetCode)
题面:
基本分析:如果遍历到要删除的节点,分情况的讨论,如果左右节点都是空,就返回null,如果左/右有一个为空,就返回右/左,如果左右都不为空,则需要将子树拼接,具体看代码
代码:
/*** 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 target;public TreeNode deleteNode(TreeNode root, int key) {target = key;if(root==null)return null;return recursion(root);}public TreeNode recursion(TreeNode node){if(node==null)return null;if(node.val==target){if(node.left==null)return node.right;if(node.right==null)return node.left;TreeNode c = node.left;while(c.right!=null)c = c.right;c.right = node.right;return node.left;}else{if(node.val>target)node.left = recursion(node.left);else node.right = recursion(node.right);}return node;}}
后言
上面是二叉树的部分习题,下一篇会讲解二叉树的其他相关力扣习题,希望有所帮助,一同进步,共勉!
相关文章:

二叉树习题其五【力扣】【算法学习day.12】
前言 书接上篇文章二叉树习题其四,这篇文章我们将基础拓展 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一…...

【数据库】Mysql的锁类型
Mysql中的锁机制主要是为了保证数据的一致性和完整性,在并发的情况下起着至关重要的作用。其中锁的类型主要是分为以下几种: 按照粒度分类 全局锁:对于整个数据库实例进行枷锁,加锁后整个实例就处于只读的状态。局锁通常用于需要…...

自媒体短视频制作素材下载网站推荐,让创作更简单
随着自媒体行业的火爆,视频质量要求也越来越高。想要找到无版权的高清视频素材并不容易,但别担心!今天为大家整理了5个国内外高质量的素材网站,让你轻松获取自媒体短视频素材,快收藏起来吧! 蛙学网 蛙学网是…...

Altium Designer 入门基础教程(五)
本文章继续接着《Altium Designer 入门基础教程(四)》的内容往下介绍: 七、AD画板的整个流程步骤 I.集成库的制作 AD元件库有2种:1、原理图元件库SCH.LIB 2、印刷电路板(PCB)元件库 PCB.LIB 印刷电路…...
Java题集练习3
Java题集练习3 1 什么时候用instanceof instanceOf关键字主要用于判断一个对象是否为某个类的子类或是接口的实例,通常用于类型转换和运行时类型判断的场景,比如继承和多态中。比如,创建一个Animal类及其子类Cat和Cat子类Hat,可…...

【部署篇】Haproxy-01安装部署(源码方式安装)
一、HAProxy概述 HAProxy是一款免费、快速且可靠的代理软件,提供高可用性、负载均衡,支持TCP和HTTP应用代理,HAProxy凭借其卓越的性能和灵活性,成为众多知名网站和系统的首选代理软件。 核心特点: 高性能…...

开拓鸿蒙测试新境界,龙测科技引领自动化测试未来
在当今科技舞台上,鸿蒙 OS 以非凡先进性强势登场,打破传统操作系统格局,为软件测试领域带来全新机遇与艰巨挑战。 一、鸿蒙 OS 的辉煌崛起 (一)壮丽发展历程与卓越市场地位 鸿蒙 OS 的发展如波澜壮阔的史诗。2023 年…...

Java项目-基于springboot框架的自习室预订系统项目实战(附源码+文档)
作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…...

调整数组奇偶数顺序
今天给大家分享一道题目,要求我们输入一个数组,将全部奇数放在偶数前面(无需比较大小),下面是我写的代码 这个方法比使用三个数组进行数据传输要节省不少程序运行时间,缺点是使用了较多的while循环…...
Electron调用nodejs的cpp .node扩展【非安全】
Electron调用nodejs的cpp .node扩展【非安全】 环境: electron: 30.1.1 nodejs: 20.14.0前言 Electron中可以非常容易的调用nodejs的js代码,但是对于cpp .node扩展需要一定的配置才能调用,下面介绍一种最简单的cpp扩展的调用方法ÿ…...

一文了解AOSP是什么?
一文了解AOSP是什么? AOSP基本信息 基本定义 AOSP是Android Open Source Project的缩写,这是一个由Google维护的完全免费和开放的操作系统开发项目。它是Android系统的核心基础,提供了构建移动操作系统所需的基本组件。 主要特点 完全开源…...

ffmpeg视频边缘模糊,打造梦幻般的视觉效果!
在视频编辑的世界里,细节决定成败。边缘模糊效果是一种强大的工具,可以让你的作品瞬间提升质感。通过简单的命令,你可以轻松实现视频边缘的柔和化处理,创造出梦幻般的视觉效果。 想象一下,当你将一段普通的视频应用边…...

[Wireshark] 使用Wireshark抓包https数据包并显示为明文、配置SSLKEYLOGFILE变量(附下载链接)
前言 wireshark安装包 链接:https://pan.quark.cn/s/febb28f57c01 提取码:fUCQ 链接失效(可能会被官方和谐)可评论或私信我重发 chrome与firefox在访问https网站的时候会将密钥写入这个环境变量SSLKEYLOGFILE中,在wir…...

大话红黑树之(1)入门介绍
红黑树简介 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,其关键特性是通过颜色标记(红色和黑色)来保证树的平衡性,从而在最坏情况下依然可以保持较高的查找、插入和删除操作的效率。红黑树通常用于需…...

ESC/POS图片打印指令
一:实践前的理论部分 蓝牙/热敏打印机如何打印图片。 票据打印机的指令和条码打印机的指令对于打印图片的格式要求基本都相似 看看ESC/POS指令的文档 是的看不懂。。。干脆直接试试好了,从如何打印一个像素的小黑点开始。 注意到x的最小单位是字节数…...
Unity之如何在Linux上部署Dedicated Server专用服务器
文章目录 前言构建为专用服务器启动时获取参数在 DigitalOcean 上准备 Linux 服务器最后,让我们开始吧。前言 我们在使用Mirror,Fishnet或者Unity Netcode开发多人游戏时,一般有三种链接模式,分别是:Host,Server,Client。 Host:代表既是客户端又是服务器 Server:代表…...
十、Linux 故障排除专业案例分享
Linux 故障排除专业案例分享 在 Linux 操作系统漫长的使用历程当中,不可避免地会遭遇到各种各样不同类型的故障。本文将会深入而全面地阐述一些较为常见的 Linux 故障以及与之相对应的解决方案。其目的在于,当用户在实际使用过程中面临类似问题的时候&a…...

智慧楼宇平台,构筑未来智慧城市的基石
随着城市化进程的加速,城市面临着前所未有的挑战。人口密度的增加、资源的紧张、环境的恶化以及对高效能源管理的需求,都在推动着我们寻找更加智能、可持续的城市解决方案。智慧楼宇作为智慧城市建设的重要组成部分,正逐渐成为推动城市可持续…...

JVM 实战篇(一万字)
此笔记来至于 黑马程序员 内存调优 内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在 GC ROOT 的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内…...
线程同步之双摄
如何实现两个摄像头进行同步,并利用同步的信号做一些事情, 比如stereo camera 做深度,如果是自己整的两个camera,同步就需要自己做, 那么这时候可以利用线程同步手写一个,下面给一个示例代码: …...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
【实施指南】Android客户端HTTPS双向认证实施指南
🔐 一、所需准备材料 证书文件(6类核心文件) 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

多模态学习路线(2)——DL基础系列
目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization(RMSNorm) 二、激活函数 1. Sigmoid激活函数(二分类&…...