天天看点

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

题目描述

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

解题思路

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

https://link.juejin.cn/?target= 实现代码

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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。      

继续阅读