news 2026/9/14 2:49:07

二叉树的最近公共祖先-python-递归

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二叉树的最近公共祖先-python-递归

题目:

思路:

  1. 递归遍历:从根节点出发,递归遍历左、右子树,目标是找到pq
  2. 回溯 “判断”—— 确定 LCA:递归遍历完左右子树后,会得到两个结果(left:左子树找到的节点;right:右子树找到的节点),通过这两个结果判断当前节点的角色
左右子树结果含义(p/q的位置)当前节点的角色返回值
left=None + right=None既不在左子树,也不在右子树无目标,无贡献None
left=None + right≠None都在右子树(右子树已找到目标 / LCA)传递右子树的结果right
left≠None + right=None都在左子树(左子树已找到目标 / LCA)传递左子树的结果left
left≠None + right≠None分别在左、右子树(跨子树)自身就是最近公共祖先当前节点root
3.最终回溯 —— 定位最深 LCA

递归会从叶子节点向上回溯,每一层都按上述规则判断:

  • p/q都在某一子树中,结果会持续向上传递该子树的 LCA;
  • p/q分属左右子树,当前节点就是 “最深” 的公共祖先(因为再往下的子树只能找到其中一个目标)。

代码:

# Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': //只要当前根节点是p和q中的任意一个,就返回(因为不能比这个更深了,再深p和q中的一个就没了) if not root or root == p or root == q: return root //根节点不是p和q中的任意一个,那么就继续分别往左子树和右子树找p和q left = self.lowestCommonAncestor(root.left,p,q) right = self.lowestCommonAncestor(root.right,p,q) //p和q都没找到,那就没有 if not left and not right: return None //左子树没有p也没有q,就返回右子树的结果 if not left: return right //右子树没有p也没有q就返回左子树的结果 if not right: return left //左右子树都找到p和q了,那就说明p和q分别在左右两个子树上,所以此时的最近公共祖先就是root return root
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 13:07:57

LangSmith:AI Agent开发者的效率神器,从OpenAI到LangChain都在用!

简介 LangSmith已成为事实上的Agent操作系统,通过可视化调试、自动化评估和数据闭环三位一体能力,将AI Agent从"黑盒"转变为"白盒"。开发者可快速定位问题、自动化测试、监控生产环境并形成数据飞轮,将开发时间从2-3个月…

作者头像 李华
网站建设 2026/9/13 23:21:59

智能图表生成:当数据分析从“怎么做图”变成“问什么”——某平台新工作流的技术解构与应用前瞻

传统的数据可视化流程是“获取数据-清洗数据-选择图表-调整格式-添加洞察”的线性链条;而AI驱动的智能图表生成,则是将数据与分析目标一并投入,输出“图表洞察”的集成解决方案。这不仅是效率的提升,更是从“可视化工具”到“数据…

作者头像 李华
网站建设 2026/9/14 4:34:45

4、VXLAN BGP EVPN基础解析

VXLAN BGP EVPN基础解析 1. 数据中心网络面临的挑战 随着云计算的发展,虚拟化技术得到了广泛应用。在传统网络中,数据流量主要是客户端和服务器之间的南北向流量,而虚拟化使得数据中心内的东西向流量大幅增加。东西向流量指的是数据中心内服…

作者头像 李华
网站建设 2026/9/14 21:21:34

22、VXLAN BGP EVPN 多 Pod 与多 Fabric 部署方案解析

VXLAN BGP EVPN 多 Pod 与多 Fabric 部署方案解析 在数据中心网络架构的构建与互联中,多 Pod (多机架单元)和多 Fabric(多网络结构)的部署方式是关键话题。下面将深入剖析相关概念、差异及不同的互联选项。 叶层互联…

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

2025年十大项目管理系统排名:综合功能、场景与用户口碑的权威榜单

在当下,项目管理系统已成为企业提升运营效率、保障交付质量的核心支撑工具。不同行业、规模的企业对系统的综合功能、场景适配性需求千差万别,而用户口碑与权威评价则成为选型决策的关键参考。本次排名基于某权威行业研究机构联合12家行业协会开展的专项…

作者头像 李华
网站建设 2026/9/15 1:57:30

Docker部署前端项目,收藏这篇就够了

前置工作 1、需要准备的东西 一台Centos服务器并连接 我这是演示用的垃圾云,建议大家上阿里云、腾讯云等。 2、连接云服务器 连接服务器看文章: https://blog.csdn.net/qq_32442973/article/details/119840447 安装Docker环境 Docker有两个分支版本&a…

作者头像 李华