news 2026/9/2 16:23:55

二叉树的最近公共祖先-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/2 20:35:34

AI时代裁员潮真相:是AI夺走了工作,还是企业转型的必然?

简介 文章探讨了科技行业裁员潮中AI的真实角色。AI虽提高效率降低成本,但经济下行、过度扩张和市场竞争也是重要因素。企业正进行战略转型,将资源从传统业务转向AI领域,这不仅是成本削减,更是人才结构重构。AI带来的是劳动力转型&…

作者头像 李华
网站建设 2026/9/2 21:53:16

GEO 3小问:一文搞懂 AI 搜索时代的 “品牌曝光关键”

1. 问:到底什么是 GEO?和传统搜索优化不一样吗?答:GEO 全称 “AI 搜索优化”,核心是让品牌精准出现在用户用 AI 提问的答案里 —— 比如用户问 AI “北京靠谱的装修公司”“国产好口碑奶粉”,GEO 能让你的品…

作者头像 李华
网站建设 2026/9/2 6:45:26

5、VXLAN与BGP EVPN的融合:数据中心网络的优化方案

VXLAN与BGP EVPN的融合:数据中心网络的优化方案1. VXLAN的优势与不足在当今的数据中心环境中,支持软件和硬件VTEP(虚拟隧道端点)的混合环境已成为常态。VXLAN(虚拟可扩展局域网)为解决网络扩展性差、增强网…

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

11、数据中心网络底层路由与多播流量处理解析

数据中心网络底层路由与多播流量处理解析1. 网络维护时的隔离操作在网络维护或其他可能造成干扰的操作期间,可通过关闭与网络虚拟边缘(NVE)或虚拟隧道端点(VTEP)关联的第一个环回接口,从底层路由的角度隔离…

作者头像 李华
网站建设 2026/9/2 16:33:52

前端项目打包详细,零基础入门到精通,收藏这篇就够了

项目打包命令为:npm run build 打包后会文件夹中自动生成一个dist文件 这个文件就是最终上传服务器的文件(或者将这个dist给后端) dist中的index打开是本地看不见什么的。如果想查看项目 ---- 1.在config目录中找到index。js build: { // …

作者头像 李华
网站建设 2026/9/1 18:50:54

2026趋势展望:DSL模型能力将成为AI数据分析可用性的关键

结合过去几年我们对前沿趋势的关注,以及从服务客户的一线获取的一手信息,我们展望了2026年数据分析的十大趋势,并将逐一展开解读。 趋势一:Data Agent开始规模化兑现价值 趋势二:AI数据分析迎来多智能体(…

作者头像 李华