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

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

题目描述

image.png

解题思路

  • 使用DFS的遍历思想,遍历二叉树。
  • 递归的结束条件是:当前节点为null或为q,或为p则返回。
  • 判断获得的左右子树返回的结果,如果右子树为空,返回左子树,左子树为空返回右子树,左右子树都不为空,返回当前节点node

实现代码

// 二叉搜索树的特点:左子树 < 根节点 < 右子树
var lowestCommonAncestor = function (root, p, q) {
    if (root === null || root === p || root === q) {
        return root;
    }
    let l = lowestCommonAncestor(root.left, p, q);
    let r = lowestCommonAncestor(root.right, p, q);
    if (l === null && r === null) {
        return null;
    }
    if (l !== null && l.val < root.val && r === null) {
        return l;
    }
    if (l === null && r !== null && r.val > root.val) {
        return r;
    }
    if (l.val < root.val && r.val > root.val) {
        return root;
    }
};
作者:Always_positive
链接:https://juejin.cn/post/6948663882139303949
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
3月前
|
存储 JSON JavaScript
「offer来了」保姆级巩固你的js知识体系(4.0w字)
该文章提供了JavaScript知识体系的全面复习资料,覆盖了从基础语法到高级特性如闭包、原型链、异步编程等多个方面,并通过大量的面试题和实例代码帮助巩固理解。
「offer来了」保姆级巩固你的js知识体系(4.0w字)
|
7月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
存储 JavaScript 前端开发
数据结构之二叉搜索树(BST)--JavaScript实现
数据结构之二叉搜索树(BST)--JavaScript实现
60 0
|
7月前
|
存储 JavaScript 前端开发
数据结构:一文看懂二叉搜索树 (JavaScript)
数据结构:一文看懂二叉搜索树 (JavaScript)
57 0
|
7月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
46 0
|
存储 算法 JavaScript
面向 JavaScript 初学者的二叉搜索树算法
面向 JavaScript 初学者的二叉搜索树算法
66 0
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
存储 算法 JavaScript
JS算法之二叉树、二叉搜索树
1. 知识点简讲 • 树在前端开发中的应用场景 • 二叉树深度优先遍历 递归和迭代的JS版本 2. 二叉树相关算法 3. 二叉搜索树(BST)相关算法
|
JavaScript
js构建二叉搜索树
js构建二叉搜索树
js构建二叉搜索树