完全二叉树的定义如下:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
层序遍历过程中,给出限制
/**
* 判断其一棵树是否为完全二叉树
*/
public static boolean isComplete(Node head) {
if(head==null) {
return true;
}
// 对其进行层次遍历
Queue<Node> queue = new LinkedList<>();
queue.offer(head);
boolean leaf = false;
while(!queue.isEmpty()) {
head = queue.poll();
// 启用
if(leaf) {
if(!(head.left==null && head.right==null)) {
return false;
}
}
if(head.left!=null) {
queue.offer(head.left);
}else if(head.right!=null) {
return false;
}
if(head.right!=null) {
queue.offer(head.right);
}else {
leaf = true;
}
}
return true;
}