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

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

这是第二次刷这个题目了,可见这个题目的考频有多高。这是一刷的地址剑指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;
    }
};
复制代码

题目反思

  • 学会使用递归的方式遍历二叉树并返回目标元素。
相关文章
|
10月前
|
算法 Java 程序员
【算法训练-二叉树 五】【最近公共祖先】二叉树的最近公共祖先、二叉搜索树的最近公共祖先
【算法训练-二叉树 五】【最近公共祖先】二叉树的最近公共祖先、二叉搜索树的最近公共祖先
78 0
|
10月前
|
算法
二叉树刷题记(八-二叉树的最大深度-深度遍历)
二叉树刷题记(八-二叉树的最大深度-深度遍历)
|
10月前
二叉树刷题记(七-二叉树的右侧视图)
二叉树刷题记(七-二叉树的右侧视图)
|
10月前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
算法
代码随想录算法训练营第二十天 | LeetCode 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先
代码随想录算法训练营第二十天 | LeetCode 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先
58 0
|
机器学习/深度学习 存储 人工智能
代码随想录训练营day21| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先...
代码随想录训练营day21| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先...
|
算法 开发工具 git
LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数
LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数
leetcode236—二叉树的最近公共祖先(递归/深搜/理解)
leetcode236—二叉树的最近公共祖先(递归/深搜/理解)
leetcode235二叉树搜索树的最近公共祖先
leetcode235二叉树搜索树的最近公共祖先
65 0
leetcode235二叉树搜索树的最近公共祖先
代码随想录刷题|LeetCode 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
代码随想录刷题|LeetCode 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
代码随想录刷题|LeetCode 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先