判断二叉树是不是完全二叉树
概念:
1.满二叉树
:一颗二叉树,如果每层的结点数都达到最大值,则这颗二叉树就是满二叉树,也就是说,如果一颗二叉树的层数为K,且结点总数是2^k-1,则它就是满二叉树
2.完全二叉树
:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树,满二叉树是一种特殊的完全二叉树。
题目链接判断是不是完全二叉树
题目分析
1.树为空:返回true
2.树不为空:进行层序遍历,把左子树,右子树都遍历一遍
3.判读队列里是否都为null:
- 都为null是完全二叉树
- 有非null的不是完全二叉树
代码
public boolean isCompleteTree (TreeNode root) {
// write code here
if(root==null) return true;
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(root);
//进行层序遍历
while(!queue.isEmpty()){
TreeNode cur=queue.poll();
if(cur==null){
break;
}else{
queue.offer(cur.left);
queue.offer(cur.right);
}
}
//判断队列里的元素
while(!queue.isEmpty()){
TreeNode cur= queue.poll();
if(cur!=null) return false;
}
return true;
}