1.判断一棵树是否是平衡二叉树
1.1 题目描述
给你一棵二叉树的根节点 root
,请你判断这棵树是否是一棵 完全二叉树 。
在一棵 完全二叉树 中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h
层)中可以包含 1
到 2h
个节点
题目思路,创建一个队列,把每棵树的根节点还有它的左子树和右子树依次放进去.在依次弹出. 直到遇到null,再检查队列里面有没有不是null的节点,如果有,那就不是完全二叉树.
具体代码实现如下:
public boolean isCompleteTree(TreeNode root) {
if(root == null){
return true;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()){
TreeNode cur = queue.poll();
if(cur != null){
queue.offer(cur.left);
queue.offer(cur.right);
}else {
break;
}
}
while (!queue.isEmpty()){
TreeNode cur = queue.poll();
if(cur !=null){
return false;
}
}
return true;
}