news 2026/5/8 20:19:35

2026年--Lc339-二叉树的最近公共祖先(树,递归)--java版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026年--Lc339-二叉树的最近公共祖先(树,递归)--java版

1.题目


2.思路

如果当前节点是 null 或者是目标节点之一(p 或 q),直接返回当前节点。
递归左右子树:
左子树返回值为 l,右子树返回值为 r。
根据左右子树的返回值判断:
如果左子树返回 null,说明 p 和 q 都在右子树中,返回右子树的结果。
如果右子树返回 null,说明 p 和 q 都在左子树中,返回左子树的结果。
如果左右子树都不为 null,说明当前节点就是最近公共祖先,返回当前节点。

3.代码实现

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution{publicTreeNodelowestCommonAncestor(TreeNoderoot,TreeNodep,TreeNodeq){// 如果当前节点是 null 或者是目标节点之一(p 或 q),直接返回当前节点。// 递归左右子树:// 左子树返回值为 l,右子树返回值为 r。// 根据左右子树的返回值判断:// 如果左子树返回 null,说明 p 和 q 都在右子树中,返回右子树的结果。// 如果右子树返回 null,说明 p 和 q 都在左子树中,返回左子树的结果。// 如果左右子树都不为 null,说明当前节点就是最近公共祖先,返回当前节点。if(root==null||root==p||root==q){//单个节点,返回自身returnroot;}//递归遍历左右子树TreeNodeleft=lowestCommonAncestor(root.left,p,q);TreeNoderight=lowestCommonAncestor(root.right,p,q);if(left!=null&&right!=null){//如果左右子树都不为 null,说明当前节点就是最近公共祖先,返回当前节点returnroot;}//如果左子树为空elseif(left==null){//说明p,q都在右子树的节点中returnright;}else{//如果右子树为空,说明p,q都在左子树的节点中returnleft;}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 7:01:10

谢菲尔德大学:AI模型如何在陌生环境中保持“人性化“表现

当我们人类从一个熟悉的环境转移到完全陌生的地方时,往往需要重新适应当地的规则和习惯。比如一个在北京生活多年的人突然搬到成都,虽然同样是说中文,但在表达方式、社交礼仪,甚至是点菜习惯上都需要重新学习和调整。有趣的是&…

作者头像 李华
网站建设 2026/5/8 11:05:24

机器人系统ros2期末速通2

6. Action(动作):带反馈、可取消的长任务6.1 核心概念(先搞懂是什么)Action 是 ROS2 里专门处理耗时久、需要中间反馈、还能随时取消的任务的通信方式。专业名词拆解:Goal(目标)&…

作者头像 李华
网站建设 2026/5/3 19:26:26

智能电商客服:AI工具驱动的服务价值链重构与行业突围

一、行业核心矛盾:全渠道割裂与价值创造乏力的双重瓶颈当前电商服务场景已呈现“多触点、碎片化、高并发”特征,传统客服模式难以适配行业发展需求。一方面,消费者分散于抖音、小红书、电商平台等多渠道,人工客服需频繁切换操作界…

作者头像 李华