【完全二叉树】【层序遍历】判断是否是完全二叉树
- 解法1 层序遍历
- **判断是不是完全二叉树思路:**:star:
---------------🎈🎈题目链接🎈🎈-------------------
解法1 层序遍历
判断是不是完全二叉树思路:⭐️
完全二叉树的叶子节点只能出现在最下层和次下层,且最下层的叶子节点集中在树的左部。
因此只需要层序遍历二叉树的节点(这次的层序遍历需要把null也遍历进去),
当遇到一个null后,如果还能再遇到一个值,那么就return false
如果能顺利的遍历结束全部的,那么就return true
public class Solution {
public boolean isCompleteTree (TreeNode root) {
if (root == null) {
return true;
}
Queue<TreeNode> myqueue = new LinkedList<>();
myqueue.add(root);
// 定义一个首次出现null的标志位
boolean sig = false;
while (!myqueue.isEmpty()) {
TreeNode temp = myqueue.poll();
// 如果遇到了空节点,那么就将标志位置为true 然后什么都不操作
if(temp == null){
sig = true;
}
else{ // 如果当前的temp不为null【如果之前已经有一个null了 那就return false,如果没有那就添加元素】
if(sig) return false; //后续访问时,如果已经遇到空节点了,说明经过了叶子,就return false
myqueue.add(temp.left);
myqueue.add(temp.right);
}
}
return true;
}
}