基本思路就是,将每层的节点以层序遍历的方式全部放入队列中(包括null) 如果是完全二叉树,在我们取出节点的时候,应该是直到整棵树遍历完毕才会遇到null。 所以当我们按层序遍历的方式,遇到null,但是队列中仍然存在节点,则代表不是完全二叉树;否则,是完全二叉树。
/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
function isCompleteTree( root ) {
// write code here
let rootArr = new Array();
rootArr.push(root);
let end = false;
while(rootArr.length) {
const node = rootArr.shift();
if(!node) {
end = true;
}else {
if(rootArr.length && end) return false;
rootArr.push(node.left);
rootArr.push(node.right);
}
}
return true;
}
module.exports = {
isCompleteTree : isCompleteTree
};