LeetCode236. Lowest Common Ancestor of a Binary Tree(思路及python解法)

fanuc机器人I/O分配 FANUC机器人在和其他外部设备进行通讯时,需要对信号进行配置。 在机器人处于UOP自动分配状态时,系统会自动检索已配对设备,并分配相应的机架号。 当我们需要手动对信号进行分配时,可参考以下机架号进行配置。 不同的通讯协议对应的机架号不同,外部通讯协议常用的机架号参考下表: 序号 机架号 通讯类型 1 0 Process I/O 2 1-15 阅读详情

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”

Given the following binary tree:  root = [3,5,1,6,2,0,8,null,null,7,4]

 

Example 1:

Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
Output: 3
Explanation: The LCA of nodes 5 and 1 is 3.

用递归的方式解决。不过理解的不是很好。

下面是别人的想法,记录一下,以后填坑。

- 若p和q分别位于左右子树中,那么对左右子结点调用递归函数,会分别返回p和q结点的位置,而当前结点正好就是p和q的最小共同父结点,直接返回当前结点即可,这就是题目中的例子1的情况。

- 若p和q同时位于左子树,这里有两种情况,一种情况是 left 会返回p和q中较高的那个位置,而 right 会返回空,所以最终返回非空的 left 即可,这就是题目中的例子2的情况。还有一种情况是会返回p和q的最小父结点,就是说当前结点的左子树中的某个结点才是p和q的最小父结点,会被返回。

- 若p和q同时位于右子树,同样这里有两种情况,一种情况是 right 会返回p和q中较高的那个位置,而 left 会返回空,所以最终返回非空的 right 即可,还有一种情况是会返回p和q的最小父结点,就是说当前结点的右子树中的某个结点才是p和q的最小父结点,会被返回,写法很简洁,代码如下:

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        
        if root is None or root==p or root==q:return root
        
        left = self.lowestCommonAncestor(root.left, p, q)
        right = self.lowestCommonAncestor(root.right, p, q)
        
        if left and right:return root
        return left or right 

 

硬件工程师的破局之路:为何你才是考取软考高级架构师的“天选之子”? 硬件工程师如何转型系统架构师:独特优势与实战路径 文章揭示了硬件工程师在考取系统架构设计师证书时的独特优势。作者指出,硬件工程师的全局思维、接口设计能力和可靠性经验正是系统架构的核心要素。通过将硬件经验升维为架构思维(从引脚到接口、从单板到系统、从实现到权衡),硬件背景反而成为竞争优势。文章建议通过知识补全、建立架构决策日志和术语转换练习来备考,并强调硬件工程师在软硬协同时代的独特价值——既能统领硬件设计,又能为软件搭建最佳舞台。文末鼓励硬件工程师以更高视野看待职业发展,将系统架构师认证视为水到渠成的职业升 阅读详情

相关推荐

【Docker】Docker安装Hadoop分布式集群

hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop。访问Hadoop102:9870,查看是否能够看到hdfs界面。访问hadoop103:8088,查看能够看到yarn界面。在yarn上可以看到执行情况。

weixin_46429290的博客 3461

二叉树的最近公共祖先(lowest-common-ancestor-of-a-binary-tree)

目录题目代码与思路前序遍历,中序遍历,后序遍历 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]...

mirana的专栏 402

trae CN 配置ida的mcp教程

本文介绍了在TraeCN中配置IDA Pro MCP服务的完整步骤:1)准备IDA Pro 9.0+和Python 3.11+环境;2)安装MCP服务端并配置插件;3)生成MCP配置文件;4)在TraeCN中添加HTTP类型MCP服务(默认端口13337);5)测试连接。重点说明了HTTP配置方式的操作流程,包括手动启动服务、正确填写JSON配置等关键环节。

2401_87915504的博客 1956

LeetCode:236. Lowest Common Ancestor of a Binary Tree(二叉树中最小祖先)

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to thedefinition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p...

zy345293721的博客 313

Office LTSC 2021/2024专业部署:ODT+config.xml标准化实战

Office部署本质上是企业终端软件生命周期管理的关键环节,其核心原理在于通过声明式配置驱动安装、激活与组件裁剪。Office Deployment Tool(ODT)作为微软官方命令行引擎,配合config.xml这一DSL契约文件,实现可版本控制、可审计、可回滚的自动化交付。该方案技术价值突出体现在稳定性保障(如LTSC长期支持通道)、合规性强化(不绕过授权机制)及运维提效(批量部署、离线支持)。典型应用场景覆盖教育机房批量装机、政企终端标准化、医疗HIS工作站部署等对功能冻结与系统确定性要求严苛的环境

diaocuiguo2493的博客 561

CXL技术入门:从PCIe到高性能计算的桥梁(附最新2.0协议解析)

本文深入解析CXL技术如何作为PCIe的进化版,成为高性能计算的关键桥梁,特别聚焦CXL 2.0协议的关键升级。从技术架构、三大子协议到典型应用场景,全面介绍CXL在缓存一致性、内存共享等方面的优势,帮助开发者快速掌握这一前沿技术。

wdx012345的博客 728

236. Lowest Common Ancestor of a Binary Tree

Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and

zuisixian的博客 252

ArcGIS小白必看:如何用3D Analyst工具将二维点线秒变三维模型(附详细步骤)

本文为ArcGIS初学者提供了利用3D Analyst工具将二维点、线数据快速转换为三维模型的完整指南。详细讲解了基于属性字段和数字高程模型(DEM)两种核心方法,并附上从数据准备、工具操作到三维场景可视化与问题排查的详细步骤,帮助用户轻松实现从平面到立体的空间数据建模。

nft7creator的博客 141

leetcode 236. Lowest Common Ancestor of a Binary Tree 二叉树的最近公共祖先(中等)

这是 二叉搜索树的最近公共祖先 这题的衍生题,这道题是普通的二叉树,不是二叉搜索树,所以就不能利其特有的性质,只能在二叉树中来搜索p和q,然后从路径中找到最后一个相同的节点即为父节点,可以用递归来实现,在递归函数中,首先看当前节点是否为空,若为空则直接返回空;若为p或q中的任一个,也直接返回当着节点;否则的话就对其左右子节点分别调用递归函数。

ln_ydc的专栏 729

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 380

Ollama + OpenCLAW 在 Windows 系统的完整部署指南

Windows 部署优先选 WSL2,避免原生环境的权限/兼容性问题;网络问题通过“离线包+国内镜像”解决,版本问题通过升级 Node.js 解决;内存不足可切换轻量模型或增大 WSL2 内存分配;核心链路:Ollama(模型管理)→ Gateway(网关)→ OpenCLAW TUI(交互),各组件启动正常即可稳定使用。

lpfasd123的博客 2824

Lowest Common Ancestor of a Binary Tree

题目地址:点击打开链接 解法一:对于深度过高的case过不了。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NU

578

华为OD机试双机位C卷-敌情监控 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【敌情监控】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 敌情监控。

qq_45776114的博客 938

leetcode 236. Lowest Common Ancestor of a Binary Tree(python)

leetcode 236. Lowest Common Ancestor of a Binary Tree题目解法1:DFS解法2:BFS+字典参考 题目 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.According to the definition of L...

qq_37821701的博客 492

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Python Leetcode】236. Lowest Common Ancestor of a Binary Tree

python leetcode 236 LCA的解法

jessie_31655616的博客 625

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Leetcode236. Lowest Common Ancestor of a Binary Tree

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

magic_jiayu的博客 196

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode算法题236:二叉树的最近公共祖先(Lowest Common Ancestor of a Binary Tree)

二叉树的最近公共祖先 LeetCode中文 LeetCode英文 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,n...

Making-It 973

LeetCode 236. Lowest Common Ancestor of a Binary Tree 详细题解

一:题意 给定一颗二叉树,两个节点p和q,求出节点p和节点q的最低公共祖先。 最先公共祖先的定义是:The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to...

rainMan的博客 260

【leetcode-Python】-后序遍历+回溯-236. Lowest Common Ancestor of a Binary Tree

题目链接 https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ 题目描述 给定一个二叉树,找到该树中两个指定节点p、q的最近公共祖先。 树中所有节点的值都唯一,p、q为不同节点且均存在于给定的二叉树中。 示例 输入:root = [3,5,1,6,2,0,8,null,null,7,4],p=5,q = 1 输出:3 节点1和节点5的最近公共祖先是节点3。 解题思路 对于二叉树问题,逃不开二叉

gulaixiangjuejue的博客 332

LeetCode-236. Lowest Common Ancestor of a Binary Tree-python3代码+解题思路

0.原题: Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two n...

qq_17753903的博客 604

leetcode 236Lowest Common Ancestor of a Binary Tree [python]

I.题目简述 II.思路及实现 III.总结归纳 I.题目简述 给定一课二叉树,求两个树的最低公共祖先 [2,5]的最低公共祖先为5 [2,8]的最低公共祖先为3 II.思路及实现 思路:①递归判断树的左右子树是否为这两个节点公共祖先(自顶向下递归方法) ②为实现方法①需写相关某一个结点是否为该节点祖先的方法 扩展:这里类似对于判断二叉树是否为平衡二叉树的思路类似(需要实现求

Judewen的博客 489

[LeetCode] 236. Lowest Common Ancestor of a Binary Tree @ python

一.题目: 求二叉树中两个节点的最近公共祖先. 二.解题思路: 首先,很通俗的解法就是找到两个节点的路径,然后对两条路径进行判断,分叉口的上一个节点就是这两个节点的最近公共祖先. 代码如下: # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # se...

tmfighting的博客 151

LeetCode 236. Lowest Common Ancestor of a Binary Tree

题目描述 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q

weixin_43762534的博客 533

LeetCode 235 二叉搜索树的最近公共祖先 Lowest Common Ancestor of a Binary Search Tree Python

有关二叉树的做题笔记,Python实现 235. 二叉搜索树的最近公共祖先 Lowest Common Ancestor of a Binary Search Tree LeetCodeCN 第235题链接 第一种方法:用236题.二叉树的最近公共祖先的方法 第二种方法:利用二叉搜索树的左子树都小于父亲节点,右子树都大于父亲节点的特性,可以把第一种方法简化一下 class Solution: ...

fongim的博客 192

leetcode 236. lowest-common-ancestor-of-a-binary-tree 二叉树的最近公共祖先 python3

时间:2020-05-31 题目地址:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/ 题目难度:Easy 题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树

isabloomingtree的博客 203

【Leetcode】236. 二叉树的最近公共祖先(Lowest Common Ancestor of a Binary Tree)

No236. 二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 示例1 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1

Xiao_Spring的博客 264
上一篇: LeetCode179. Largest Number(思路及python解法)
下一篇: LeetCode404. Sum of Left Leaves(思路及python解法)
船桥
博客等级 码龄9年 5粉丝 194原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值