题解 | #判断是不是完全二叉树#

判断是不是完全二叉树

https://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param root TreeNode类
 * @return bool布尔型
 */

function isCompleteTree(root) {
    // write code here
    // 考虑使用逐层遍历二叉树,取出每一层的所有节点,放入arr中
    // 如果出现一个节点的子树不全,后续的节点不能有子树

    if (!root) return true;
    let arr = [root];
    let mark = false; //当这个标记变为true后,后面不能再出现子树
    while (arr.length > 0) {
        current = arr.shift();//取出第一个根节点,观察情况
        if (mark && (current.left || current.right)) {
            // 如果前面有不完全的子树,这里还在后续发现了子树,则返回false
            return false;
        }
        if(!current.left&¤t.right){
            // 有右无左返回false
            return false;
        }
        if(current.left){arr.push(current.left)}
        else{ mark =true}
        if(current.right){arr.push(current.right)}
        else{ mark =true}

    }
    return true
}
module.exports = {
    isCompleteTree: isCompleteTree,
};

全部评论

相关推荐

07-11 18:47
已编辑
门头沟学院 后端工程师
在看数据的孤勇者很想...:如果你是在校硕士,六段大厂实习一眼假,假设一段实习两个月,硕一暑假,硕一寒假,大四暑假,大四寒假,大三寒假,大三暑假,哥们,你怎么卷吗,寒假基本两个月在企业实习不现实,所以你可能是日常实习,但是你不可能每段日常实习都是两个月吧,他们日常实习都是三个月起步这样,所以你往前推一下,一段日常实习,就三个月,敢情你大学生课都不上,全在实习吗?你自己问问自己,六段大厂实习,一点没学到,自己说出来会不会笑呀,不管学历,但凡有一段大厂实习都很牛逼了
投递米哈游等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务