判断二叉树是否是完全二叉树

题目:

    给出一个二叉树,判断是否是完全二叉树。

分析:我们都知道完全二叉树是指最后一层左边是满的,右边可能慢也不能不满,然后其余层都是满的,根据这个特性,利用层遍历,

如果我们当前遍历到了NULL结点即叶结点,那么后续如果还有非叶结点,就说明是非完全二叉树,所以利用队列,代码比较简单了。

View Code
bool is_completeTree(Node* r)
{
queue<Node*> q;
if(NULL != r)
{
q.push(r);
Node* cur = NULL;
bool flag = false;
while(!q.empty())
{
cur = q.front();
q.pop();
if(cur)
{
if(flag)
return false;
q.push(cur->left);
q.push(cur->right);
}
else
flag = true;
}
return true;
}
return true;
}



posted on 2012-03-30 13:21  buptLizer  阅读(8099)  评论(0编辑  收藏  举报

导航