二叉树的层次遍历指的是从二叉树的根节点,按照从上到下从左向右依次遍历。首先要访问头结点,然后将其压入队列中,然后取出该元素,访问之并且将该元素的孩子(为空时不加入,也不访问)按照先左后右的顺序压入队列......依次进行,知道访问完所有的元素,也就是队列为空了。
伪代码如下
void trave(Betree *p)
{ if(p==NULL) return;//空树没有访问的必要
visit(p->data); push(q,p);//访问根节点,并且将其压进队列
while(!q.empty())
{
r=delx(q);//队首元素出队,并且返回给r
if(r->lchild) { visit(r->lchild->data);push(q,r->lchild) }
if(r->rchild) {visit(r->rchild->data);push(q,r->rchild) }
}
}