**有一棵二叉树,请设计一个算法判断它是否是完全二叉树。
给定二叉树的根结点root,请返回一个bool值代表它是否为完全二叉树。树的结点个数小于等于500。**
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}*/
public class CheckCompletion {
public boolean chk(TreeNode root) {
// write code here
if(root == null)
return false;
LinkedList<TreeNode> queue =new LinkedList<TreeNode>();
boolean flag = true;
TreeNode cur = root;
TreeNode temp = null;
queue.add(cur);
while(!queue.isEmpty()){
cur = queue.poll();
if(cur.right != null && cur.left == null)
flag = false;
if(cur.left != null && cur.right == null){
temp = queue.peek();
if(temp.left != null && temp.right == null){
flag = false;
}
}
if(cur.left!= null)
queue.offer(cur.left);
if(cur.right != null)
queue.offer(cur.right);
}
return flag;
}
}