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

相关推荐
my_styles15 小时前
linux系统下安装 tengine / 宝兰德等国产信创中间件和闭坑
linux·运维·服务器·spring boot·nginx·中间件
ByteCraze15 小时前
JavaScript 深拷贝完全指南:从入门到精通
开发语言·javascript·ecmascript
yy_xzz15 小时前
【Linux开发】I/O 复用:select 模型
linux·c++·select
用户842981424181015 小时前
3个Html加密工具
javascript
小肝一下15 小时前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
EnglishJun16 小时前
ARM嵌入式学习(十八)--- Linux的内核编译和启动
linux·运维·学习
魔都吴所谓16 小时前
【Ubuntu】离线环境下Git LFS(deb包)安装与验证完整教程
linux·git·ubuntu
w61001046616 小时前
CKA-2026-StorageClass
linux·运维·服务器·cka·storageclass
忆琳16 小时前
Vue3 全局自动大写转换:一个配置,全站生效
javascript·element
人道领域16 小时前
【LeetCode刷题日记】242.字母异位词
算法·leetcode·职场和发展