对于一棵二叉树,判断是否是一棵完全二叉树。
typedef struct Node
{
int key;
Node* lChild;
Node* rChild;
}* PNode;
bool is(PNode & p)
{
bool flag = false;
queue<PNode> q;
q.push(p);
while (!q.empty())
{
PNode t = q.front();
q.pop();
if (flag)
{
if (p->lChild || p->rChild)
return false;
}
else
{
if (p->lChild&&p->rChild)
{
q.push(p->lChild);
q.push(p->rChild);
}
else if (p->rChild)//只有右节点
return false;
else if (p->lChild)//只有左节点
{
q.push(p->lChild);
flag = true;
}
else//没有节点
flag = true;
}
}
return true;
}