题解 | #35.判断是不是完全二叉树#
判断是不是完全二叉树
http://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae
思路:借助层序遍历
只有x,x,x,#,#,#
这样的才是完全二叉树
如果出现x,#,y,#,#,#
或者x,#,#,x,#,#,#
证明不是完全二叉树
碰到第一个#的时侯令flag=true
如果再次碰到非#
结点,且flag=true
时候,说明不是完全二叉树
function isCompleteTree( root ) {
let queue = [];
queue.push(root);
let flag = false;
while(queue.length){//队列不为空时
const node = queue.shift();//取出第一个
if(node==null){
flag = true;
}else{
if(flag==true)
return false;//已经取出了一个null 并且 当前取出的node不为null 队列中还有 对应于# x # #
queue.push(node.left);
queue.push(node.right);
}
}
return true;
}
module.exports = {
isCompleteTree : isCompleteTree
};