/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
bool isCompleteTree(TreeNode* root) {
queue<TreeNode*>q;
bool flag = false;
q.push(root);
TreeNode*cur;
while(!q.empty())
{
for(int i = 0;i<q.size();i++)
{
cur = q.front();
q.pop();
if(cur == NULL)
{
flag = true; //大体上跟层序遍历的类似,这里就需要判断如果后面有节点,并且前面是空的节点,这里就需要用到if else先把flag设定成true,然后再是当下一次cur不等于null的时候返回false
}
else{
if(flag)
return false;
q.push(cur->left);
q.push(cur->right);
}
}
}
return true;
}
};