描述 给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)
数据范围:节点数满足 1 \le n \le 100 \1≤n≤100 样例图1:
样例图2:
样例图3: 思路: 最好实现的方式就是层序遍历,每一层,每一层的找,根据完全二叉树的介绍,除叶子节点外,其他各层都达到了最大节点数,且叶子节点有一到两个节点,集中在最左边。所以如果在层序遍历过程中未到达叶子节点出现了空节点,或者叶子节点集中在了右边,那么为false。要注意的是,需要先左后右。
function isCompleteTree( root ) {
const res = [root];
let flag = false;
while(res.length){
const node = res.shift();
if(node){
if(flag) return false;
res.push(node.left);
res.push(node.right);
console.log(node.val)
} else {
flag = true;
}
}
return true;
}
牛客刷题
|