完全二叉树:只有最下面的两层结点度能够小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树
完全二叉树是指最后一层左边是满的,右边可能满,然后其余层都是满的,这里需要用到队列来标记不满的位置,
如果再次标记表示不满足完全二叉树的定义;
bool WQBT(node *t)
{
queue<node*>q;
if(t!=NULL)
{
q.push(t);
node* tt;
int flag=0;
while(!q.empty())
{
tt = q.front();
q.pop();
if(tt!=NULL)
{
if(flag==1)
return 0;
q.push(tt->lc);
q.push(tt->rc);
}
else
flag=1;
}
return 1;
}
return 1;
}
STL队列的基本用法
头文件:#includ<queue>
声明方法:
1、普通声明:queue<int>q;
2、结构体
struct node
{
int x, y;
};
queue<node>q;
q.push(x) 将x压入队列的末端
q.pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
q.front() 返回第一个元素(队顶元素)
q.back() 返回最后被压入的元素(队尾元素)
q.empty() 当队列为空时,返回true
q.size() 返回队列的长度