bool isCompleteTree(TreeNode *root)
{
//核心:出现了空节点后再出现非空节点就不是完全二叉树
//分析:主要是加入了标志位以及对层序遍历的入队部分进行了小修改,让空节点也可以入队
bool flag = false; //标志位,用来判断是否出现了空节点
queue<TreeNode*>q;
q.push(root);
while(!q.empty()){
TreeNode *p = q.front();
q.pop();
if(!p) flag = true; //如果p是NULL,设为true代表已出现空节点
else{
if(flag) return false;//出现了空节点,进入该分支代表又有非空节点了,说明不是完全二叉树
q.push(p->left);
q.push(p->right);
}
}
return true;
}