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

相关推荐
@菜菜_达3 分钟前
jquery.inputmask插件介绍
前端·javascript·jquery
s_w.h5 分钟前
【 linux 】认识make和makefile
linux·运维·bash
不怕犯错,就怕不做17 分钟前
ARM设备异常断电容易造成数据损坏,硬件如何设计
linux·驱动开发·嵌入式硬件
摸鱼小李上线了19 分钟前
vue项目页面添加水印实现方法
前端·javascript·vue.js
Harm灬小海21 分钟前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
叶小鸡24 分钟前
小鸡玩算法-力扣HOT100-动态规划(上)
算法·leetcode·动态规划
caicai_xiaobai24 分钟前
Ubuntu上Git安装步骤
linux·git·ubuntu
砍材农夫24 分钟前
物联网 基于netty构建mqtt协议规范(主题通配符订阅)
java·前端·javascript·物联网·netty
平行云34 分钟前
实时云渲染平台数据通道,支持3D应用文件上传下载分享无缝交互
linux·unity·云原生·ue5·gpu算力·实时云渲染·像素流送
爱滑雪的码农40 分钟前
React Native 完整开发全流程(从零到上线)
javascript·react native·react.js