二刷--二叉树的最近公共祖先

简介: 二刷--二叉树的最近公共祖先

这是第二次刷这个题目了,可见这个题目的考频有多高。这是一刷的地址剑指Offer——二叉树的最近公共祖先(JS实现)

题目描述

image.png

解题思路

  • 首先判断当前节点是null还是p还是q。
  • null:直接返回null
  • p:直接返回p
  • q:直接返回q
  • 递归遍历左右子树并接受返回值
  • 如果左右子树返回的值都不为空,则说明当前的父节点就是最近公共祖先。反之则返回当前不为空的节点为最近公共祖先。

AC代码

var lowestCommonAncestor = function(root, p, q) {
    // 如果节点为空 返回null
    if (!root ) return null;
    if (root === p) return p;
    if (root === q) return q;
    let x = lowestCommonAncestor(root.left,p,q);
    let y = lowestCommonAncestor(root.right,p,q);
    if (x && y) {
        return root;
    } else {
        return x || y;
    }
};
复制代码

题目反思

  • 学会使用递归的方式遍历二叉树并返回目标元素。
相关文章
|
存储 算法
【每日挠头算法题(9)】二叉树的直径|二叉树的层序遍历
【每日挠头算法题(9)】二叉树的直径|二叉树的层序遍历
|
8月前
|
Linux
数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度
|
8月前
|
Java BI 数据库管理
二叉树---前,中,后序遍历做题技巧(前,中,后,层次,线索二叉树)
二叉树---前,中,后序遍历做题技巧(前,中,后,层次,线索二叉树)
106 11
|
8月前
|
算法
二叉树刷题记(八-二叉树的最大深度-深度遍历)
二叉树刷题记(八-二叉树的最大深度-深度遍历)
|
8月前
|
算法 API DataX
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
|
算法 C语言 C++
【树】你真的会二叉树了嘛? --二叉树LeetCode专题Ⅲ
这题算是简单题,我们依然从最简单的情况来考虑。
72 0
每日一题:LeetCode-103/107.二叉树的(层序/锯齿形层序)遍历
每日一题:LeetCode-103/107.二叉树的(层序/锯齿形层序)遍历
剑指offer_二叉树---重建二叉树
剑指offer_二叉树---重建二叉树
67 0
【创作赢红包】< 二叉树OJ题(一) >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树
【创作赢红包】< 二叉树OJ题(一) >单值二叉树&&二叉树的最大深度&&翻转二叉树&&相同的树&&对称二叉树
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习(二)
一篇文章带你玩转二叉树的层序遍历 | 十道题巩固练习
73 0

热门文章

最新文章