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 判断一个树是不是完全二叉树
最新推荐文章于 2023-05-10 19:07:55 发布