题解 | #判断是不是完全二叉树#
判断是不是完全二叉树
https://www.nowcoder.com/practice/8daa4dff9e36409abba2adbe413d6fae
/** * 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) { // 空树一定是完全二叉树 if(!root) return true; // 层序遍历,构造单向队列辅助 queue<TreeNode*> q; // 根节点先访问 q.push(root); // 定义一个首次出现的标记位 bool flag = false; // 层序遍历 while(!q.empty()){ int sz = q.size(); for(int i = 0; i < sz; ++i){ TreeNode* cur = q.front(); q.pop(); // 标记第一次遇见空节点 if(!cur) flag = true; else{ // 后续访问已经遇到空节点了,说明经过了叶子 if(flag) return false; q.push(cur->left); q.push(cur->right); } } } return true; } };