1.完全二叉树
定义:除了空树外,树的高度差不超过1,如果叶子节点不全,则都在左边。如下图:
图1是完全二叉树,图2,3 不是完全二叉树
public booelan isCBT(Node head){
if(head == null){
return true;
}
Queue<Node> q = new LinkedList<Node>();
q.offer(head);
boolean leaf = false;
while(!q.isEmpty()){
head = q.poll();
Node l = head.left;
Node r = head.right;
if((leaf &&(l != null || r != null)) || (l == null && r != null)){
return false;
}
if(l != null){
q.offer(l);
}
if(r != null){
q.offer(r);
}else{
leaf = true;
}
return true;
}