问题 问答题

给定一棵用二叉链表表示的二叉树,其中的指针t指向根结点,试写出从根开始,按层次遍历二叉树的算法,同层的结点按从左至右的次序访问。

答案

参考答案:考虑用一个顺序队que来保存遍历过程中的各个结点,由于二叉树以二叉链表存储,所以可设que为一个指向数据类型为bitree的指针数组,最大容量为maxnum,下标从1开始,同层结点从左到右存放。算法中的front为队头指针,rear为队尾指针。
levelorder(BiTree*t)//按层次遍历二叉树t
{
BiTree*que[maxnum];
int rear,front;
if (t!=NULL)
{
front=0://置空队列
rear=1;
que[1]=t;
do
{
front=front%maxsize+1://出队
t=que[front];
printf(t->data);
if (t->lchild!=NULL)//左子树的根结点入队
{
rear=rear%maxsize+1;
que[rear]=t->1child;

单项选择题
多项选择题