swust oj的第987题 利用队列判断是否是完全二叉树
http://acm.swust.edu.cn/#/problems/987/271?_k=j2kydc
完全二叉树是指深度为h,除h层外其他各层结点都到达最大个数,且第h层的结点都集中在左边的二叉树
思路:
如果数为空树,直接返回false;
如果结点h左右孩子结点都存在则将其左右孩子入队列把该结点出队列;
如果结点h左孩子存在但右孩子不存在或左右孩子都不存在,则该结点之后的结点都是叶子结点返回true否则返回false;
如果结点h左孩子不存在但右存在直接返回false;
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
//实现的函数
bool ss(tree *h)
{
queue<tree*> q;
if(h == NULL)
{
return false;
}
q.push(h);
while(!q.empty())
{
tree * top = q.front();
if(top->rchild != NULL && top->lchild != NULL)
{
q.pop();
q.push(top->lchild);
q.push(top->rchild);
}
if(!top->lchild && top->rchild)
{
return false;
}
if((top->lchild && !top->rchild) || (!top->lchild && !top->rchild))
{