bool check(node *root)
{
if(root==NULL)//如果树为空,不是完全二叉树
return false;
queue<node *>q;
q.push(root);
while(!q.empty())
{
node *top=q.front();
q.pop();
if(top->l&&top->r)//如果左右孩子都存在,入队
{
q.push(top->l);
q.push(top->r);
}
else if(top->r&&top->l==NULL)//如果右孩子存在而左孩子不存在,不是完全二叉树
{
return false;
}
else
{
//如果左孩子不为空,右孩子为空,或者左右孩子都为空
//若该节点之后的队列中的结点都为叶子结点,则是完全二叉树,否则不是
if(top->l&&top->r==NULL)
{
q.push(top->l);
}
while(!q.empty())
{
top=q.front();
q.pop();
if(top->l||top->r)
return false;
}
}
}
return true;
}
判断一棵树是不是完全二叉树思路
最新推荐文章于 2023-09-17 13:59:32 发布