/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ /*完全二叉树的判断de思路: 利用层次遍历将每一层结点入队(包括null的结点),当队头结点指针指向null结点时 break出while循环,进入第二个while进行判断null结点后是否还有非空结点 若有则返回false,反之。 */ class Solution { public: bool isCompleteTree(TreeNode* root) { queue<TreeNode *>que; //创建一个队列 que.push(root); //根结点入队 while(!que.empty()){ TreeNode *node=que.front();//node指针指向当前对头结点 que.pop(); //将队首结点弹出 if(!node){//如果队头指针为null的话 退出while循环 break; }else{ //node指针非空 que.push(node->left); que.push(node->right);//将左右孩子均压入队列中 } } while(!que.empty()){ TreeNode *node=que.front(); if(node) return false; que.pop();//弹出队头结点 } return true; } };