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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一棵二叉树的根节点 root 和 TreeNode 类对象的数组(列表) nodes,返回 nodes 中所有节点的最近公共祖先(LCA)。
数组(列表)中所有节点都存在于该二叉树中,且二叉树中所有节点的值都是互不相同的。

我们扩展二叉树的最近公共祖先节点在维基百科上的定义:“对于任意合理的 i 值, n 个节点 p1 、 p2、…、 pn 在二叉树 T 中的最近公共祖先节点是后代中包含所有节点 pi 的最深节点(我们允许一个节点是其自身的后代)”。

一个节点 x 的后代节点是节点 x 到某一叶节点间的路径中的节点 y。

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

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

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

输入: root = [3,5,1,6,2,0,8,null,null,7,4], nodes = [1]
输出: 1
解释: 单个节点的最近公共祖先是该节点本身。

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

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

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

输入: root = [3,5,1,6,2,0,8,null,null,7,4], nodes = [0,1,2,3,4,5,6,7,8]
输出: 3
解释: 树中所有节点的最近公共祖先是根节点。提示:
树中节点个数的范围是 [1, 10^4]-10^9 <= Node.val <= 10^9
所有的 Node.val 都是互不相同的。
所有的 nodes[i] 都存在于该树中。
所有的 nodes[i] 都是互不相同的。

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

2. 解题

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, vector<TreeNode*> &nodes) {if(nodes.size()==1) return nodes[0];TreeNode* ans = lowestCommonAncestor(root, nodes[0], nodes[1]);for(int i = 2; i < nodes.size(); ++i)ans = lowestCommonAncestor(root, ans, nodes[i]);return ans;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q){if(!root || p==root || q==root) return root;auto l = lowestCommonAncestor(root->left, p, q);auto r = lowestCommonAncestor(root->right, p, q);if(l&&r) return root;return l ? l : r;}
};
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {unordered_set<TreeNode*> s;
public:TreeNode* lowestCommonAncestor(TreeNode* root, vector<TreeNode*> &nodes) {for(auto n : nodes)s.insert(n);TreeNode* ans = NULL;for(auto n : nodes)ans = lowestCommonAncestor(root, ans, n);return ans;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q){if(!root || p==root || q==root || s.count(root)) return root;auto l = lowestCommonAncestor(root->left, p, q);auto r = lowestCommonAncestor(root->right, p, q);if(l&&r) return root;return l ? l : r;}
};

68 ms 40.8 MB C++


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

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

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

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

相关文章

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…

oracle 只对成绩前三名进行排序其余不变_2021年采用美术统考成绩的重点院校名单汇总...

点击蓝字关注我们吧&#xff01;2019年底&#xff0c;教育部发文&#xff0c;除独立设置的本科艺术院校和参照院校(共48所)外&#xff0c;其余高校的美术学类和设计学类专业不允许组织校考。不管是211工程大学还是985工程大学&#xff0c;均被严格进行组织美术类校考。但是&…

LeetCode 1564. 把箱子放进仓库里 I(排序)

文章目录1. 题目2. 解题1. 题目 给定两个正整数数组 boxes 和 warehouse &#xff0c;分别包含单位宽度的箱子的高度&#xff0c;以及仓库中 n 个房间各自的高度。 仓库的房间分别从 0 到 n - 1 自左向右编号&#xff0c; warehouse[i] &#xff08;索引从 0 开始&#xff09;…

LeetCode 1580. 把箱子放进仓库里 II(排序)

文章目录1. 题目2. 解题1. 题目 给定两个正整数数组 boxes 和 warehouse &#xff0c;分别包含单位宽度的箱子的高度&#xff0c;以及仓库中n个房间各自的高度。 仓库的房间分别从0 到 n - 1 自左向右编号&#xff0c;warehouse[i]&#xff08;索引从 0 开始&#xff09;是第 …

oracle如何检查是否rac,Oracle RAC 状态检查

(1)srvctl status database -d dbservernameOraclezjgldb2$srvctl status database -d kms实例 kms1 正在节点 zjgldb1 上运行实例 kms2 正在节点 zjgldb2 上运行(2)crs_stat -toraclezjgldb2$crs_stat -t名称 类型 目标 状态 主机-------------…

LeetCode 1602. 找到二叉树中最近的右侧节点(BFS)

文章目录1. 题目2. 解题1. 题目 给定一棵二叉树的根节点 root 和树中的一个节点 u &#xff0c;返回与 u 所在层中距离最近的右侧节点&#xff0c;当 u 是所在层中最右侧的节点&#xff0c;返回 null 。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,4,5,6], u …