Leetcode236经典题目二叉树的最近公共祖先

news2024/9/20 22:33:28

本次为大家带来的题目是leetcode236二叉树的最近公共祖先
在这里插入图片描述
本道题的直观思路是自底向上进行寻找,如果存在的话那么向上返回,如何能够自底向上遍历呢?我们可以利用回溯进行处理,那么需要注意的是进行回溯的时候一定要使用后序遍历来操作,因为后序遍历的顺序是左、右、根,那么在根节点也就是我们进行判断的操作了。
下面说下可能存在的情况
1.如果当前节点的左和右子树都不为空,那么说明找到了公共祖先,直接返回。
2.假如节点左子树为空,右子树不为空,说明我们要继续向上返回。同理右子树为空左子树不为空也要返回。
具体的代码实现如下:

class Solution {
      public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        //终止条件
        if(root==null) return null;
        //如果当前节点为q或p直接返回
        if(root==p||root==q) return root;
        //后序遍历
        //左
       TreeNode left = lowestCommonAncestor(root.left,p,q);
       //右
       TreeNode right = lowestCommonAncestor(root.right,p,q);
       //根
       //左右都不为空,说明存在q,p
       if(left!=null&&right!=null){
        return root;
       }else if(left!=null &&right==null){
        return left;
       }else if(right!=null&&left==null){
        return right;
       }else{
        return null;
       }

    }
}

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

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

相关文章

Centos7安装FFmpeg详细步骤(已验证成功)

最近我们需要使用FFmpeg来合成视频功能,这就需要用到服务器必须安装FFmpeg了。 FFmpeg 是一款功能强大的跨平台命令行工具,可以处理各种音频和视频文件,包括转换视频和音频格式、剪辑、合并视频和音频、提取音频、添加字幕、添加水印、调整视…

读书学习笔记入门 # Datawhale X 李宏毅苹果书 AI夏令营

文章目录 学习目标:学习内容:Task 1 通过案例了解机器学习机器学习(Machine Learning,ML)和深度学习(Deep Learning,DL)的基本概念什么是回归(regression)什么…

【机器学习】表示学习的基本概念和方法以及编解码结构的基本概念

引言 表示学习(Representation Learning)是机器学习的一个子领域,它专注于学习数据的表示形式,即数据的高层特征或抽象概念 文章目录 引言一、表示学习1.1 表示学习的重要性1.2 表示学习的方法1.3 应用场景1.4 挑战1.5 总结 二、如…

AUTOSAR_EXP_ARAComAPI的5章笔记(2)

返回目录 5.3 Proxy Class Proxy Class从AutoSar元模型的服务接口描述中生成。 ara::com确实标准化了生成的Proxy Class的接口。一个AP产品供应商的工具链将生成一个代理实现类来精确地实现这个接口。 注意: 因为Proxy Class必须提供的接口是由ara::com定义的,所…

教你手机投屏到电视方法,用电视屏幕让家庭蛋糕制作更有趣

心血来潮,我突然想要尝试跟着手机视频制作蛋糕。当我向老妈提起这个想法时,她也表示出了浓厚的兴趣,想要一起学习如何制作蛋糕。 然而,我们很快意识到一个问题:如果我们俩都挤在狭小的厨房里,一边看手机一…

51单片机-LED点阵屏介绍

作者:Whappy 时间:2024.9.3 目的:手撕51 74HC595,原理很简单,就是通过串行输入端SER,将一个字节的数据一位一位的传送到我们的移位寄存器中,图左边第一个区域,则SERCLK就是给移位节…

[STM32]从零开始的STM32 LED教程(小白向)

一、为什么LED会作为第一个例程 大家可能已经发现了,我们大部分的STM32教程都将LED作为教程中的第一个例程。为什么呢?在我看来,之所以把LED作为教程的第一个例程,因为这个实验能够让新手直观的看到实验现象,在操作GPI…

记一次某中学系统越权漏洞

一、确定测试站点 资产的收集依旧是按照弱口令与注册进站的思路进行寻找(具体思路可参考上篇文章,含有完整的收集思路与个人信息搜集方法)。最后确定了该站点,密码依旧存在弱口令: 于是利用默认密码成功登录该站点&am…

cocotb备忘录

按位给和int int后接的值,建议在32之内。大于32位建议按位给,因为int强制类型转换有范围 第二,低位给到低位,高位给到高位 # 将src_ip和dst_ip给到phv中,TMD以后只要报错在这个范围里面,TMD直接马上用手算一遍能不能…

自闭症谱系障碍:探索这一复杂神经发育障碍的奥秘

自闭症,也被称为孤独症谱系障碍(ASD),是一种深刻影响儿童神经发育的复杂障碍。它以独特的社交交流障碍、重复刻板行为以及兴趣范围的极度狭窄为主要特征,为患者及其家庭带来了诸多挑战。 自闭症的成因至今仍是科学界探…

构建私有CA和证书

一、准备 两台虚拟机 192.168.252.148 CA 192.168.252.149 客户端 二、构建私有CA 192.168.252.148 CA 安装openssl 1.检查是否存在 rpm -qa openssl 2.安装或者更新openssl yum install openssl openssl-devel -y 查看CA相关配置 /etc/pki/tls/openssl.cnf这个文件是…

充气泵芯片|充气泵方案芯片SIC8833

充气泵的方案设计功能比较简单,四个压力模块和ADC芯片以及再加个主控芯片大约就构成了其核心功能的器件要求。ADC芯片的功能是将压力传感器所得到压力值转化为可显示的数值,在通过LED或者LCD屏展现出来,就是后面我们测量气压所得到的气压数值…

二异硬脂醇苹果酸酯行业分析:前三大厂商占有大约51.0%的市场份额

二异硬脂醇苹果酸酯(Distearyl Malate)是一种由苹果酸与硬脂醇反应生成的酯类化合物,常用于化妆品和护肤品中作为润肤剂、增稠剂和乳化剂。其特点是具有良好的保湿和滋润效果,同时能提供丝滑的质地和优越的使用感,适合…

入门篇 LeetCode算法之旅启程 - 从零开始的编程进阶之路

你是否曾经在技术面试中因为算法题而汗流浃背?是否在日常编码中感觉自己的解决问题能力有待提高? 目录 LeetCode: 你的算法训练场为什么选择LeetCode?LeetCode平台使用指南1. 注册与登录2. 探索题库3. 解题过程4. 提交与反馈5. 学习与讨论6. 追踪进度7. 参与竞赛 制定你的…

java重点学习-mysql

二 mysql 2.1 如何定位慢查询? 1:介绍一下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢,压测的结果大概5秒钟) 2.我们系统中当时采用了运维工具(Skywalking),可以监测出哪个接口,最终因为是sql的问题 3.在mysql中开启了慢日…

JAVA使用海康SDK调用抓图功能

1.SDK下载 下载网址:海康开放平台SDK下载地址 注:根据需要操作系统下载对应SDK 本文使用WIndows操作系统 2.海康Demo测试 1)IDEA打开项目ClientDemo 2)ClientDemo进行适当修改,留下加载SDK和NET_DVR_CaptureJPEGPic…

Service Android四大组件 小白秒懂

目录 Service简介 1.Service作用 2.Service特点 3.两种启动方式的生命周期 4.Service相关内部类 Service简介 1.Service作用 后台长期处理耗时的逻辑 Service不存在UI界面,Service在后台运行,不能与用户进行交互功能 2.Service特点 后台运行&…

域名证书,泛域名证书,sni

文章目录 前言一、证书1.全域名证书2.泛域名证书 二、域名证书的使用1、浏览器请求域名证书流程对全域名证书的请求流程对泛域名证书的请求流程ssl client-hello携带server name 报文 2、浏览器对证书的验证流程 三、域名证书和sni 前言 本文介绍了泛域名证书和全域名证书的区别…

【QT】析构函数执行引发异常

在析构函数执行完成后引发异常,程序崩溃 造成异常的原因 在布局添加QSpacerItem引起的异常,使用try…catch无法捕获 QSpacerItem *spacer new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Fixed);QHBoxLayout *hLayout2 new QHBoxLayout;…

搭建和使用OnFinality?

目录 您可以用OnFinality做什么? 举个例子 注册OnFinality账户 部署专用节点 入门 选择网络 配置新节点 节点规格 启动配置 检查您的新节点 选择计费方式 恭喜,现在去构建你的 dApp 吧! 您可以用OnFinality做什么? On…