public boolean isCompleteTree(Node root){
if (root==null){
return true;
}
Queue<Node> list=new LinkedList<>();
list.offer(root);//如果根节点不为空,放入队列
while (!list.isEmpty()){
Node cur=list.poll();//移除队头元素,判断队头元素
if (cur!=null) {
list.offer(cur.left);//左右节点放入队列
list.offer(cur.right);
}else {
while (!list.isEmpty()){//如果队列中有null那么判断,队列中是不是还有不为null的元素,如果有说明不是完全二叉树,如果都为空那么则是完全二叉树
Node cur1=list.poll();//每次移除栈顶元素判断是否为空
if (cur1!=null)//不为空则返回的是false
return false;
}
}
}
return true;//代码能运行到该行,则说明出现null,开始检查队列中是否有不为空的元素,没有不为空的元素,则是完全二叉树
}
JAVA 判断一个树是不是完全二叉树
最新推荐文章于 2025-07-30 00:54:10 发布
本文介绍了一种通过广度优先搜索(BFS)来判断一棵树是否为完全二叉树的算法。算法首先将根节点放入队列,然后依次处理队列中的每个节点,检查其左右子节点。一旦发现空节点,后续节点必须全部为空,以此判断是否为完全二叉树。
1188

被折叠的 条评论
为什么被折叠?



