剑指Offer——二叉树的最近公共祖先(JS实现)

简介: 剑指Offer——二叉树的最近公共祖先(JS实现)

题目描述

image.png

解题思路

  • 使用DFS的遍历思想进行遍历二叉树
  • 如果为空节点或p节点或q节点,直接返回该节点
  • 遍历的时候,看返回值,如果p和q都存在就返回当前的root节点,如果只有一个存在就反返回不为空的节点。

实现代码

var lowestCommonAncestor = function(root, p, q) {
    if (root === null || root === p || root === q) {
        return root;
    }
    let x = lowestCommonAncestor(root.left,p,q);
    let y = lowestCommonAncestor(root.right,p,q);
    if (x && y) {
        return root;
    } else {
        return x || y;   // 返回存在的那一个
    }
};
作者:Always_positive
链接:https://juejin.cn/post/6948663969418575886
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
2月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
4月前
|
算法 JavaScript
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
JS 【详解】二叉树(含二叉树的前、中、后序遍历技巧和算法实现)
48 0
|
6月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
6月前
|
存储 算法 JavaScript
JS算法-二叉树的后序遍历
JS算法-二叉树的后序遍历
|
6月前
|
算法 JavaScript
JS算法-二叉树的前序遍历
JS算法-二叉树的前序遍历
|
6月前
|
算法 JavaScript
JS算法-二叉树的右视图
JS算法-二叉树的右视图
|
6月前
|
算法 JavaScript
JS算法-二叉树展开转为链表
JS算法-二叉树展开转为链表
|
6月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
42 0
|
存储 算法 JavaScript
JS算法之二叉树、二叉搜索树
1. 知识点简讲 • 树在前端开发中的应用场景 • 二叉树深度优先遍历 递归和迭代的JS版本 2. 二叉树相关算法 3. 二叉搜索树(BST)相关算法
|
Web App开发 JavaScript 前端开发