首先完全二叉树即为一颗二叉树直到空节点前一直都是连续的树
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int a) :val(a), left(NULL), right(NULL) {};
};
bool isallTree(TreeNode * p)
{
if (p == NULL)return true;
queue<TreeNode*>help;
help.push(p);
bool isend = false;
while (!help.empty()) {
p = help.front();
help.pop();
if ((p->left != NULL||p->right!=NULL)&&isend) {
return false;
}
if (p->left != NULL) {
help.push(p->left);
}
else {
isend = true;
}
if (p->right != NULL) {
if (isend)return false;
else help.push(p->right);
}
else
isend = true;
}
return true;
}