判断二叉树是否为完全二叉树
import java.util.LinkedList;
import java.util.Queue;
public class judgeTree {
public static boolean judge(TreeNode root){
if(root == null)
return true;
Queue<TreeNode> qu = new LinkedList<TreeNode>();
qu.add(root);
TreeNode temp = null;
int flag = 0;
while(!qu.isEmpty()){
temp = qu.peek();
qu.remove();
if(temp.left != null && flag == 0)
qu.add(temp.left);
else if(temp.left != null)
return false;
else
flag =1;
if(temp.right != null && flag == 0)
qu.add(temp.right);
else if(temp.right != null)
return false;
else
flag =1;
}
return true;
}
}
注:网上搜来的解法。层序遍历,设置标志位flag,遇到有null的值就置flag为1,flag不为1且节点的孩子节点不为null,入队,否则(flag为1且节点的孩子节点不为null,即前面有为null的结点,必然不是完全二叉树)返回false,都不满足则置flag为1(表示遇到了null结点)