news 2026/1/22 2:29:36

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/1/18 19:53:30

夫妻间忌讳的9句话,烂在肚子也不要说

俗话说:百年修得同船渡,千年修得共枕眠。夫妻聊天别瞎聊,这9句话堪比“婚姻炸弹”,说了容易引发家庭“地震”,快烂在肚子里!你这脑子,跟没带出门似的吧?就你这水平,还不如…

作者头像 李华
网站建设 2026/1/19 9:31:23

国内首例 AI 伴侣聊天提供者涉黄获刑,二审将开庭;OpenAI :大模型能力过剩,未来重心将转向系统层与应用层丨日报

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「…

作者头像 李华
网站建设 2026/1/21 7:00:31

LLDB:现代化的开源调试器(LLVM Debugger)

LLDB:LLVM Debugger 现代化的开源调试器 LLDB是一个现代化的开源调试器,作为LLVM编译器项目的一部分,它被设计为高性能、可扩展,并且支持多种语言和平台。以下是对LLDB的详细解析: 1. 核心背景 所属项目:L…

作者头像 李华
网站建设 2026/1/21 14:58:29

【开题答辩全过程】以 基于Web技术的知识付费平台为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/1/18 10:08:10

[大模型架构] LangGraph AI 工作流编排(15)

一、LangGraph 核心概念拆解(理解工作流的 “骨架”) 视频首先系统讲解 LangGraph 的核心组件与设计思想,避免开发者因概念模糊导致后续开发踩坑,核心围绕 “状态(State)、节点(Node&#xff0…

作者头像 李华
网站建设 2026/1/21 14:45:11

【大数据毕设推荐】基于Spark的大学排名数据可视化系统,Python+Hadoop技术栈详解 毕业设计 选题推荐 毕设选题 数据分析 机器学习

✍✍计算机毕设指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡有什么问题可以…

作者头像 李华