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

相关推荐
前端大波1 分钟前
Web Vitals 与前端性能监控实战
前端·javascript
桌面运维家25 分钟前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
xlp666hub30 分钟前
【Linux驱动实战】:字符设备驱动之内核态与用户态数据交互
linux·面试
久绊A36 分钟前
服务器新硬盘初始化与挂载
linux·挂载
毕设源码-赖学姐40 分钟前
【开题答辩全过程】以 基于VUE的环保网站设计为例,包含答辩的问题和答案
前端·javascript·vue.js
x_xbx40 分钟前
LeetCode:2. 两数相加
算法·leetcode·职场和发展
IMPYLH1 小时前
Linux 的 chroot 命令
linux·运维·服务器
小J听不清1 小时前
CSS 字体样式全解析:字体类型 / 大小 / 粗细 / 样式
前端·javascript·css·html·css3
克莱因3581 小时前
Linux Cent OS7 at定时任务
linux·运维·服务器
RisunJan1 小时前
Linux命令-make(GNU的工程化编译工具)
linux·运维·gnu