力扣第236题——二叉树的最近公共祖先 (C语言题解)

题目描述

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

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

示例 1:

输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
输出:3
解释:节点 5 和节点 1 的最近公共祖先是节点 3 

示例 2:

输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
输出:5
解释:节点 5 和节点 4 的最近公共祖先是节点 5 因为根据定义最近公共祖先节点可以为节点本身。

示例 3:

输入:root = [1,2], p = 1, q = 2
输出:1

提示:

  • 树中节点数目在范围 [2, 105] 内。
  • -109 <= Node.val <= 109
  • 所有 Node.val 互不相同 。
  • p != q
  • p 和 q 均存在于给定的二叉树中。

 C语言递归算法

这道题的递归算法并不好理解,需要结合讲解和代码结合着多理解几遍。
1、如果root等于p或q,说明root本身就是最近公共祖先,直接返回
2、如果root为NULL则说明到了叶子节点,直接返回
3、分别查询左节点和右节点是否能够查到p或q
若p左q右,或p右q左,说明root就是最近公共祖先
若都在一边,那么只要继续查这一边就可以了

struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) {
    if (root == NULL || root == p || root == q) return root;
        struct TreeNode *left = lowestCommonAncestor(root->left, p, q);
        struct TreeNode *right = lowestCommonAncestor(root->right, p, q);
        if (left == NULL) return right;
        if (right == NULL) return left;
        return root;
}

力扣题目网址:力扣——全球极客挚爱的技术成长平台

萌新不定期在互联网上随地乱丢一些赛博垃圾,还望拨冗批评斧正~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【轮式平衡机器人】——软硬件配置/准备

本系列以轮式平衡移动机器人为例&#xff0c;将使用基于模型设计&#xff08;MBD&#xff09;方法进行介绍&#xff0c;涉及基础硬件、软件、控制算法等多方面内容&#xff0c;结合MATLAB/Simulink的强大仿真能力和代码生成能力辅助设计&#xff01;在此过程中可以系统了解开发…

Elastic Stack(1):Elastic Stack简介

1 简介 ELK是一个免费开源的日志分析架构技术栈总称&#xff0c;官网https://www.elastic.co/cn。包含三大基础组件&#xff0c;分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析&#xff0c;它还可以支持其它任何数据搜索、分析和收集的场景&#xf…

将 SQL Server 2022 数据库备份到 MinIO

Microsoft 在将 S3 连接器和 Polybase 添加到 SQL Server 2022 时取得了重大飞跃。因此&#xff0c;企业可以利用他们保存到对象存储中的大量数据&#xff0c;并使用它来丰富 SQL Server 表。他们还可以利用对象存储来备份 SQL Server&#xff0c;这是开放性和云原生灵活性的又…

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)

文章目录 1.计算日期到天数转换题目详情代码思路 2.KY111 日期差值题目详情代码思路 3.KY222 打印日期题目详情代码 4.KY258 日期累加题目详情代码思路 1.计算日期到天数转换 传送门 题目详情 代码 #include <iostream> using namespace std; int GetDay(int year,int…

面试题16.15.珠玑妙算

前言 这两天突然发现力扣上还是有我能写出来的题的&#xff0c;虽说都是简单级别的&#xff08;以及一道中等的题&#xff09;&#xff0c;但是能写出来力扣真的太开心了&#xff0c;&#xff08;大佬把我这段话当个玩笑就行了&#xff09;&#xff0c;于是乎&#xff0c;我觉…

【C语言深度剖析——第三节(关键字3)】《C语言深度解剖》+蛋哥分析+个人理解

本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 目录 1.基本数据类型2.sizeof关键字 前言&#xff1a; 本期我们继续探讨关于C深度解剖这本书相关内容&#…

创业前先把刘强东这两句琢磨明白!不然大概率失败!2024最适合创业的行业!2024年普通人的创业机会在哪里

第一句&#xff0c;真正解决一个问题。 这句话表达了&#xff0c;你的项目一定是要建立在解决具体的问题上&#xff0c;而不是你觉得自己有个好点子&#xff0c;或者好产品就可以了。因为即使你的产品很好&#xff0c;服务很好&#xff0c;如果不能切实的解决某个问题&#xf…

使用pycharm连接读取orcl数据库的表

背景&#xff1a;工作需要 需求&#xff1a;使用pycharm访问远程oracle类型数据库的表&#xff0c;表中包含lob字段&#xff08;这也是个坑&#xff01;&#xff09; 麻了&#xff0c;搞了一个星期&#xff0c;终于成功了&#xff0c;真可谓是每步都有坑&#xff0c;看的文章也…

每日OJ题_算法_滑动窗口⑤_力扣904水果成篮

目录 力扣904. 水果成篮 解析及代码1&#xff08;使用容器&#xff09; 解析及代码2&#xff08;开数组&#xff09; 力扣904. 水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这…

禅道:从安装到使用,一篇文章带你全面了解

博客前言&#xff1a; 在这个充满竞争和快节奏的世界里&#xff0c;项目管理已经成为了许多行业的关键环节。禅道作为一种功能强大、易用的项目管理工具&#xff0c;正在被越来越多的企业和团队所采用。它不仅能帮助我们高效地管理项目&#xff0c;还能提升团队协作和沟通的效…

竞赛保研 大数据房价预测分析与可视

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据房价预测分析与可视 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&#xff0c;适合…

2023我的总结:读书、写作、运动、爱家人、学一门手艺

不知不觉中&#xff0c;2024年1月已过去大半了&#xff0c;按照惯例&#xff0c;还是对过去一年的所思所行做个简单的汇报。也希望我的一些经历&#xff0c;能给到正在做年终总结或新年规划的朋友&#xff0c;一些参考。 01 读书&#xff0c;是门槛最低的高贵 最近一段时间&am…

Jmeter对接口测试入参实现MD5加密

一、自带函数助手MD5加密 在函数助手中找到__MD5这个函数&#xff0c;第一个参数是要md5加密的值&#xff0c;第二个参数是保存加密后值的变量 在请求参数中引用该函数 发送请求可以看到密码加密了 二、beanshell脚本md5加密 在jmeter的lib目录下&#xff0c;自带commons-cod…

傲空间私有部署 Linux 指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。Install Docker Engine on Ubu…

基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)

基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比&#xff08;Matlab&#xff09; 工程下载&#xff1a; HFSS的微带线特性阻抗仿真工程文件&#xff08;注意版本&#xff1a;HFSS2023R2&#xff09;&#xff1a; https://download.csdn.net/download/weixin_445…

定向减免!函数计算让 ETL 数据加工更简单

业内较为常见的高频短时 ETL 数据加工场景&#xff0c;即频率高时延短&#xff0c;一般费用大头均在函数调用次数上&#xff0c;推荐方案一般为攒批处理&#xff0c;高额的计算成本往往令用户感到头疼&#xff0c;函数计算推出定向减免方案&#xff0c;让 ETL数据加工更简单、更…

centos7安装nginx,按图文步骤操作

下载nginx&#xff1a; 官方网站&#xff1a;http://nginx.org/ 我这使用的版本是1.8.0版本。 1.nginx要求的安装环境 1.1、需要安装gcc的环境。 yum install gcc-c 1.2、第三方的开发包。 pcre PCRE(Perl Compatible Regular Expressions)是一个Perl库&#xff0c;包括…

Autosar信息安全入门系列01-SecOC基础介绍

本文框架 1. 概述2. SecOC基本概念2.1 SecOC是什么&#xff1f;2.2 新鲜度值与MAC值2.3 SecOC报文格式 3. SecOC报文发送及接收逻辑3.1 SecOC报文的发送3.2 SecOC报文的接收 1. 概述 本文为Autosar通信入门系列介绍&#xff0c;如您对AutosarMCAL配置&#xff0c;通信&#xf…

ChatGPT提示词保姆级教程

现在越来越多提示词教程&#xff0c;本文列个清单&#xff0c;方便以后整理&#xff0c;不定期更新&#xff0c;欢迎关注留言&#xff01; 后续更新欢迎关注 提示词&#xff08;prompt&#xff09;出来后&#xff0c;被称为一个新的岗位诞生&#xff0c;面向提示词工程师。 …

Mysql 索引 、事务、隔离级别

目录 索引&#xff08;index&#xff09; 1.为什么要有索引&#xff1f; 2.引入索引的代价 3.索引的操作 4.索引的使用场景 5.索引的底层原理 事务 (transaction) 事物的回滚是怎么做到的 事物的四大特性 并发执行事务带来的问题 隔离级别 索引&#xff08;index&…