bool isComplete(Node *root){
std::queue<Node *> q;
q.push(root);
while (true){
Node *front = q.front();
q.pop();
//A B C D NULL E NULL NULL NULL
if (front == NULL){//跳出while的条件,让第一个空出栈了
break;
}
//层序遍历,空节点也进队列
q.push(front->left);
q.push(front->right);
}
//判定队列中剩余数据是否全是NULL,此时front为E,再判断E以后的数据即可
while (!q.empty()){
Node *front = q.front();
q.pop();
if (front != NULL){
return false;
}
}
//所有都是空
return true;
}
判断一颗二叉树是否为完全二叉树
最新推荐文章于 2024-07-23 20:38:48 发布