0
点赞
收藏
分享

微信扫一扫

236. 二叉树的最近公共祖先 JavaScript实现

Go_Viola 2022-04-30 阅读 78

236. 二叉树的最近公共祖先

一、思想

思路详解1
思路详解2
在这里插入图片描述

二、代码实现

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {TreeNode} p
 * @param {TreeNode} q
 * @return {TreeNode}
 */
var lowestCommonAncestor = function(root, p, q) {
    // 1、递归函数
    var travelTree = function(root,p,q){
        // 2、递归结束的条件 / 最近公共祖先是root的一种情况
        if(root == null || root == p || root == q) return root;
        
        // 3、单层递归的逻辑 / 遍历左右子树
        let left = travelTree(root.left,p,q);
        let right = travelTree(root.right,p,q);
        
        // 4、根据遍历结果确定最近公共祖先
        if(right && left) return root;
        if(right == null) return left;
        if(left == null) return right;     
    }
    
    // 调用递归函数,别忘了return
    return travelTree(root,p,q);
};
举报

相关推荐

0 条评论