Leetcode 236. 二叉树的最近公共祖先 (Day 17) JavaScript

javascript 复制代码
var lowestCommonAncestor = function (root, p, q) {
    if (!root) return null;
    if (root === p || root === q) return root;
    const left = lowestCommonAncestor(root.left, p, q);
    const right = lowestCommonAncestor(root.right, p, q);
    if (left && right) {
        return root;
    }
    return left ?? right;
};

这题递归没什么思路,看的题解
(1) 如果当前结点 root 等于 NULL,则直接返回 NULL
(2) 如果 root 等于 p 或者 q ,那这棵树一定返回 p 或者 q
(3) 然后递归左右子树,因为是递归,使用函数后可认为左右子树已经算出结果,用 left 和 right 表示
(4) 此时若left为空,那最终结果只要看 right;若 right 为空,那最终结果只要看 left
(5) 如果 left 和 right 都非空,因为只给了 p 和 q 两个结点,都非空,说明一边一个,因此 root 是他们的最近公共祖先
(6) 如果 left 和 right 都为空,则返回空(其实已经包含在前面的情况中了)

相关推荐
从零开始的嵌入式之旅几秒前
day32
linux·c语言·经验分享·笔记·嵌入式硬件
秃秃秃秃哇8 分钟前
orin上sensor一帧raw图大小的计算
linux
byte轻骑兵17 分钟前
【BlueZ 】蓝牙配对/绑定基础:BlueZ 中安全机制的入门级源码解析
linux·人工智能·bluez·电脑蓝牙·嵌入式蓝牙
waillyer23 分钟前
企业知识库智能问答 Agent(React + Nest)
javascript·redis·agent
xx~t26 分钟前
嵌入式学习——进程与线程2
linux·c语言·学习·进程与线程
给AI剪纸的打工人35 分钟前
OpenCode怎么接第三方API?自定义Provider与Responses配置实战
linux·数据库·人工智能
lingran__1 小时前
Linux 基础常用指令万字详解(下)|一切皆文件:重定向、管道、日志 与 Shell 原理
linux·运维·服务器·shell·管道·重定向·打包压缩
ouynagda1 小时前
Linux信号与进程间通信学习笔记
linux·笔记·学习
祖力551 小时前
进程间通信(IPC机制):无名通道与有名通道
linux·运维·服务器·进程·通信·进程间通信·ipc