LeetCode 1644. 二叉树的最近公共祖先 II

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一棵二叉树的根节点 root,返回给定节点 p 和 q 的最近公共祖先(LCA)节点。
如果 p 或 q 之一不存在于该二叉树中,返回 null。
树中的每个节点值都是互不相同的。

根据维基百科中对最近公共祖先节点的定义:“两个节点 p 和 q 在二叉树 T 中的最近公共祖先节点是后代节点中既包括 p 又包括 q 的最深节点(我们允许一个节点为自身的一个后代节点)”。
一个节点 x 的后代节点是节点 x 到某一叶节点间的路径中的节点 y。

示例 1:
在这里插入图片描述

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

示例 2:
在这里插入图片描述

输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
输出: 5
解释: 节点 54 的共同祖先节点是 5。根据共同祖先节点的定义,一个节点可以是自身的后代节点。

示例 3:
在这里插入图片描述

输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 10
输出: null
解释: 节点 10 不存在于树中,所以返回 null。提示:
树中节点个数的范围是 [1, 104]-109 <= Node.val <= 109
所有节点的值 Node.val 是互不相同的。
p != q

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 跟之前的 236题 LCA 差不多,只是增加了判断 p, q 是否都存在于树中
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {bool findp = false, findq = false;
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ans = lowestCommonAncestor1(root,p,q);if(findp && findq) return ans;return NULL;}TreeNode* lowestCommonAncestor1(TreeNode* root, TreeNode* p, TreeNode* q) {if(!root) return root;if(root==p) findp = true;else if(root==q) findq = true;auto l = lowestCommonAncestor1(root->left,p,q);auto r = lowestCommonAncestor1(root->right,p,q);if(root==p || root==q || (l && r))return root;return l ? l : r;}
};

116 ms 60.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

这就是搜索引擎--读书笔记五--索引的建立与更新

索引的建立和更新 索引的建立 前一总结里说到&#xff0c;如果索引结构建立好了&#xff0c;可以提高搜索的速度&#xff0c;那么给定一个文档集合&#xff0c;索引是如何建立起来的呢&#xff1f;建立索引的方式有很多种&#xff0c;在这里我就书中提到的三种方法简单总结一下…

LeetCode 1650. 二叉树的最近公共祖先 III(哈希)

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树中的两个节点 p 和 q&#xff0c;返回它们的最近公共祖先节点&#xff08;LCA&#xff09;。 每个节点都包含其父节点的引用&#xff08;指针&#xff09;。Node 的定义如下&#xff1a; class Node {public int val;public No…

PHP方向+go+rpc+swoole,瞅瞅 PHP+Swoole 作为网络通信框架

这里瞅瞅Swoole框架&#xff0c;因为说的比较屌&#xff0c;官网里面文档比较多https://www.swoole.com/代码地址(https://gitee.com/swoole/swoole)这里先复制他的说明(https://wiki.swoole.com/)Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调…

如何准备考试

最近准备International Requirement Engeering Board 考试&#xff0c;但凡上点年纪对记忆就不行了&#xff0c;时间也不够&#xff0c;就想着怎么偷懒。 因此&#xff0c;就把测试题做了一遍&#xff0c;然后分析各个章节的分值比重及自己容易错的地方的比重。然后有的放矢再去…

LeetCode 1676. 二叉树的最近公共祖先 IV

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root 和 TreeNode 类对象的数组&#xff08;列表&#xff09; nodes&#xff0c;返回 nodes 中所有节点的最近公共祖先&#xff08;LCA&#xff09;。 数组&#xff08;列表&#xff09;中所有节点都存在于该二叉树中&a…

matlab行人检测非极大值抑制,多目标检测中的非极大值抑制(NMS)的算法改进_jza...

非极大值抑制(Non-Maximum Suppression&#xff0c;NMS)&#xff0c;顾名思义就是抑制不是极大值的元素&#xff0c;可以理解为局部最大搜索。这个局部代表的是一个邻域&#xff0c;邻域有两个参数可变&#xff0c;一是邻域的维数&#xff0c;二是邻域的大小。而是用于目标检测…

Azure SQL 数据库:服务级别与性能问答

ShawnBice 2014 年 5 月 5 日上午 10:00 几天前&#xff0c;我发表了一篇文章&#xff0c;并就 4 月 24 日发布的适用于Windows Azure SQL 数据库的新服务级别提供了一些预料中的问题和解答&#xff0c;在其中为读者介绍了一些详细信息。在这篇跟进文章中&#xff0c;我想提…

LeetCode 1852. 每个子数组的数字种类数(滑窗)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums与一个整数 k&#xff0c;请你构造一个长度 n-k1 的数组 ans&#xff0c;这个数组第i个元素 ans[i] 是每个长度为k的子数组 nums[i:ik-1] [nums[i], nums[i1], ..., nums[ik-1]]中数字的种类数。 返回这个数组 ans。 示…

用chrome模拟微信浏览器访问需要OAuth2.0网页授权的页面

现在很流行微信网页小游戏&#xff0c;用html5制作的小游戏移过来&#xff0c;可以放到微信浏览器中打开&#xff0c;关键是可以做成微信分享朋友圈的形式&#xff0c;大大提高游戏的传播&#xff0c;增强好友的游戏互动。 微信浏览器中打开网页游戏效果还不错&#xff0c;对手…

LeetCode 1891. 割绳子(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 ribbons 和一个整数 k&#xff0c;数组每项 ribbons[i] 表示第 i 条绳子的长度。 对于每条绳子&#xff0c;你可以将任意切割成一系列长度为正整数的部分&#xff0c;或者选择不进行切割。 例如&#xff0c;如果给你一条长度…

LeetCode 1618. 找出适应屏幕的最大字号(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 text。并能够在 宽为 w 高为 h 的屏幕上显示该文本。 字体数组中包含按升序排列的可用字号&#xff0c;您可以从该数组中选择任何字体大小。 您可以使用FontInfo接口来获取任何可用字体大小的任何字符的宽度和高度。 FontInf…

UML类图画法及类之间几种关系

文章目录如下&#xff1a; 一、类图画法 二、类之间的几种关系&#xff1a;泛化&#xff08;Generalization&#xff09;、实现&#xff08;Realization&#xff09;、关联&#xff08;Association&#xff09;&#xff08;又分一般关联、聚合&#xff08;Aggregation&#xff…

LeetCode 1634. 求两个多项式链表的和

文章目录1. 题目2. 解题1. 题目 多项式链表是一种特殊形式的链表&#xff0c;每个节点表示多项式的一项。 每个节点有三个属性&#xff1a; coefficient&#xff1a;该项的系数。项 9x4 的系数是 9 。power&#xff1a;该项的指数。项 9x4 的指数是 4 。next&#xff1a;指向…

python编程制作接金币游戏,闪电侠接金币的FlashMan类

python the Flash man catch coin gif animation闪电侠是美剧&#xff0c;这里是一个小游戏&#xff0c;操作闪电侠接不断冒出来的金币。本模块定义了FlashMan类。这个模块能单独运行&#xff0c;运行后用鼠标操作闪电侠移动即可。以下是部分代码预览&#xff1a;""&…

LeetCode 1660. 纠正二叉树(BFS)

文章目录1. 题目2. 解题1. 题目 你有一棵二叉树&#xff0c;这棵二叉树有个小问题&#xff0c;其中有且只有一个无效节点&#xff0c;它的右子节点错误地指向了与其在同一层且在其右侧的一个其他节点。 给定一棵这样的问题二叉树的根节点 root &#xff0c;将该无效节点及其所…

MS SQL Server 常用操作

以下为常用&#xff1a; --发邮件应该很常用吧 exec msdb.dbo.sp_send_dbmailprofile_name mail_profile, --邮件配置主档&#xff0c;通过数据库邮件配置向导生成&#xff0c;一般叫dba_profile,详细看下图recipients email_recipients, --地址&#xff0c;多个用英文逗号隔…

LeetCode 1730. 获取食物的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 你现在很饿&#xff0c;想要尽快找东西吃。你需要找到最短的路径到达一个食物所在的格子。 给定一个 m x n 的字符矩阵 grid &#xff0c;包含下列不同类型的格子&#xff1a; * 是你的位置。矩阵中有且只有一个 * 格子。 # 是食物。矩阵中可…

LeetCode 1874. 两个数组的最小乘积和

文章目录1. 题目2. 解题1. 题目 给定两个长度相等的数组a和b&#xff0c;它们的乘积和为数组中所有的a[i] * b[i]之和&#xff0c;其中 0 < i < a.length。 比如a [1,2,3,4]&#xff0c;b [5,2,3,1]时&#xff0c;它们的乘积和为 1*5 2*2 3*3 4*1 22 现有两个长…

LeetCode 1940. 排序数组之间的最长公共子序列(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个由整数数组组成的数组arrays&#xff0c;其中arrays[i]是严格递增排序的&#xff0c;返回一个表示所有数组之间的最长公共子序列的整数数组。 子序列是从另一个序列派生出来的序列&#xff0c;删除一些元素或不删除任何元素&#xff0…

最小二乘估计_相关性及最小二乘估计【20201026】

考前高考要求1.知识要求对知识的要求依次是了解、理解、掌握三个层次.2.能力要求(1)空间想象能力(2)抽象概括能力(3)推理论证能力(4)运算求解能力(5)数据处理能力(6)应用意识(7)创新意识3.个性品质要求个性品质是指考生个体的情感、态度和价值观.要求考生具有一定的数学视野&am…