LeetCode236:二叉树的最近公共祖先

news2024/11/30 12:52:18

题目描述
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

在这里插入图片描述
解题思想
使用后序遍历和回溯的思想

代码

class Solution {
public:

    TreeNode* res=nullptr;
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if (root == nullptr) return nullptr;
        
        if (root == p || root == q) return root;
       
        //左
        TreeNode* left = lowestCommonAncestor(root->left, p, q);
      
        //右
        TreeNode* right = lowestCommonAncestor(root->right, p, q);

        //中:回溯
        if (left && right) return root;
        else if (left == nullptr && right != nullptr) return right;
        else if (left != nullptr && right == nullptr) return left;
        else return nullptr;
    }
};

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

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

相关文章

二分查找的时间复杂度的讲解

二分查找的代码: 二分查找的时间复杂度: 最坏的情况: 就是找不到和查找区间只剩一个值的时候,这两种都是最坏的结果,假设查找了x次,达到了最坏的结果: N代表每一次折半区间数据的个数&#xf…

【C语言】——字符串函数的使用与模拟实现(下)

【C语言】——字符串函数的使用与模拟实现(下) 前言五、长度受限类字符串函数5.1、 s t r n c p y strncpy strncpy 函数5.2、 s t r n c a t strncat strncat 函数5.3、 s t r n c m p strncmp strncmp 函数 六、 s t r s t r strstr strstr 函数6.1、函…

20240329-1-SVM面试题

SVM面试题 1. SVM直观解释 SVM,Support Vector Machine,它是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;其还包括核技巧,这使它成为实质上的非线性分类…

使用SpringBoot将中国地震台网数据保存PostGIS数据库实践

目录 前言 一、数据转换 1、Json转JavaBean 2、JavaBean与数据库字段映射 二、空间数据表设计 1、表结构设计 三、PostGIS数据保存 1、Mapper接口定义 2、Service逻辑层实现 3、数据入库 4、运行实例及结果 总结 前言 在上一篇博客中基于Java的XxlCrawler网络信息爬…

解决yarn第一次使用无法运行的问题

报错: yarn : 无法加载文件 D:\program software\NVM\nvm\v16.20.0\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 …

鲲鹏920RDMA应用示例代码

当前针对鲲鹏920服务器,编写了RDMA通信传输代码,首先采用TCP socket进行管理信息获取,然后调用verbs函数接口进行数据传输。需要安装rdma-core-devel库才可以编译 代码如下: /** rdma_lib.h** Created on: 2021年1月1日* A…

java激活

此破解码适合2023所有版本 找到idea64.exe.vmoption添加下面三行 链接:破解包下载 提取码:jqw1

软件工程 考研复试常考知识点总结

软件工程 什么是软件工程,这门课讲的什么? 软件工程就是把软件的开发、运行、维护的各个阶段进行系统化和规范化的过程,也就是把工程化的方法运用在软件技术之中,以构建和维护高质量的软件。 进一步,什么是工程化思想…

0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)

做题 借助例题[极客大挑战 2019]EasySQL1来理解SQL注入中的万能账号密码。 我们现解题,解题过程中的知识点在后面都会说到。 打开网址,我们看到的是这个界面。根据题目提示应该是属于SQL注入类型的 1.寻找注入点,很明显,输入用…

JDK17的Mybatis-Plus报错问题

添加 --add-opens java.base/java.langALL-UNNAMED

物理机安装centos7并配置基本环境,网络配置,docker配置

1.首先下载镜像Download 2.下载UltraISO 安装docker 第1步:卸载当前版本docker yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \do…

unity制作拼接地图

前段时间有个朋友问我想要制作一款地图编辑器,最开始我还想着在一个平面用节点切割制作地图编辑器这倒是也行,但不太好控制每一个点,如果未来项目大了,更加不好维护。 偶然间翻到一篇文章:unity地图边缘检测 或许我们…

升级啦!探索全新 StarRocks 中文社区与高效使用秘籍!

眼尖的朋友可能已经注意到,StarRocks 中文社区最近换上了全新的皮肤。是的,我们 StarRocks 的聚集地升级了!🎉 自成立两年半以来,StarRocks 中文社区不断壮大,现已发展成为一个拥有数万名成员的活跃社区。…

2024年团队程序设计天梯赛模拟赛 L1 + L2

目录 L1 - 6 剪切复制 L1 - 8 小偷踩点 L2 - 1 推宝塔 L2 - 2 含茶量 L2 - 3 到底爱不爱我 L2 - 4 寻宝图 L1 - 6 剪切复制 使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl X)。请实现一个简单的具有剪切和粘贴功能的文本…

MSSQL 命令行操作说明 sql server 2022 命令行下进行配置管理

说明:本文的内容是因为我在导入Access2019的 *.accdb 格式的数据时,总是出错的背景下,不得已搜索和整理了一下,如何用命令行进行sql server 数据库和用户管理的方法,作为从Access2019 直接导出数据到sql server 数据库…

低噪声放大器是如何实现低噪声放大的功能的

灵敏度作为接收机最重要的指标之一,直接决定了接收机能分辨的最小信号。接收机的灵敏度计算公式如下所示。 Psensitivity=-174dBm+NF+10*lg(BW)+SNR 由接收机灵敏度的计算公式可知,影响接收机灵敏度的指标有噪声系数、带宽和信噪比,因此一旦带宽和信噪比确定了,那么能决…

图像基础—图像分类

图像通常分为二值图像、灰度图像和彩色图像 图 1-3 二值图像、灰度图像和彩色图像 (1)二值图像 二值图像又称为黑白图像,图像中任何一个点非黑即白,要么为白色(像素 为 255),要么为黑色&#x…

制作一个RISC-V的操作系统十一-定时器中断

文章目录 CLINT定时器中断mtimemtimecmp机制总体框架流程时间节拍系统时钟代码 CLINT 产生软件中断和定时器中断 定时器中断 mtime 类似计数器,按照硬件对应的固定频率递增 上电后会自动复位为0,有硬件自动完成 mtimecmp 需要自己设置&#xff0…

Docker安装Oracle之踩坑记

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

ai免费打造写真大片!3个宝藏工具!

随着科技的飞速发展,人工智能(AI)已经渗透到我们生活的方方面面,包括摄影和图像处理领域。今天,我们就来揭秘那些能够让你轻松打造出专业级写真大片的AI工具,让你的摄影作品惊艳全场! 迅捷图片转…