/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ bool isCompleteTree(TreeNode* root) { // write code here if(!root) return true; queue<TreeNode *> myqu; myqu.push(root); bool start=false; while(!myqu.empty()){ int sz=myqu.size(); while(sz--){ auto node=myqu.front(); myqu.pop(); if(node->left){ if(start){ //启动满树判断标志位,一旦出现箜节点,之后不能再出现非空节点 return false; } myqu.push(node->left); }else{ start=true; } if(node->right){ if(start){ return false; } myqu.push(node->right); }else{ start=true; } } } return true; } };