剑指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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
27天前
|
存储 JavaScript 前端开发
数据结构:一文看懂二叉搜索树 (JavaScript)
数据结构:一文看懂二叉搜索树 (JavaScript)
42 0
|
8月前
|
存储 JavaScript 前端开发
数据结构之二叉搜索树(BST)--JavaScript实现
数据结构之二叉搜索树(BST)--JavaScript实现
43 0
|
5月前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
24 0
|
5月前
|
存储 算法 JavaScript
面向 JavaScript 初学者的二叉搜索树算法
面向 JavaScript 初学者的二叉搜索树算法
41 0
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
168 0
|
移动开发 JavaScript weex
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
weex-自定义module,实现weex在iOS的本地化,js之间互相跳转,交互,传值(iOS接入weex的最佳方式)
221 0