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 都为空,则返回空(其实已经包含在前面的情况中了)

相关推荐
还卿一钵无情泪13 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
高山有多高13 小时前
【Linux笔记】IO模型
linux
Nil20814 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
不会就选b14 小时前
Linux之TCP理论<1>
linux·运维·服务器
小π军15 小时前
操作系统面试题
java·linux·服务器
传人once15 小时前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
Lsetea16 小时前
curl用IP测试HTTPS报证书不匹配:--resolve与Host头别混用
linux·https·ssl证书·openssl·curl
Hao28516 小时前
Windows11 下把 WSL2 Ubuntu 26.04 装到 D 盘完整
linux
Android系统攻城狮16 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_samples_min调用流程与实战(六十)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
All for pursuit.16 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode