题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @param o1 int整型
 * @param o2 int整型
 * @return int整型
 */
function core(root, o1, o2) {
    if (!root) {
        return [-1, false, false];
    }

    let current = [root.val, o1 == root.val, o2 == root.val];

    let left = core(root.left, o1, o2);
    let right = core(root.right, o1, o2);

    let is1 = current[1] || left[1] || right[1];
    let is2 = current[2] || left[2] || right[2];
    let value = -1;
    if ((left[1] && left[2]) || (right[1] && right[2])) {
        // 说明早已经找到了则不修改value
        value = left[0] != -1 ? left[0] : right[0];
        console.log(value)
    } else {
        value = current[0];
    }
    return [value, is1, is2];
}
function lowestCommonAncestor(root, o1, o2) {
    // write code here
    let res = core(root, o1, o2);
    return res[0];
}
module.exports = {
    lowestCommonAncestor: lowestCommonAncestor,
};

全部评论

相关推荐

永远年轻_永远热泪盈眶:咱们真是苦难哥俩,我是浙大宁理,你是浙大城院,测试学历卡得不严,之前携程实习,只能说确实wlb,但携程学历厂,当时我mentor面试官,给我们看了他面试的六个人,全是研究生,学历最烂的一个都是杭电研究生,复旦华科一堆
点赞 评论 收藏
分享
头像
03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务