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

admin2013-01-19  33

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

选项

答案考虑用一个顺序队que来保存遍历过程中的各个结点,由于二叉树以二叉链表存储,所以可设que为一个指向数据类型为bitree的指针数组,最大容量为mltxnum,下标从1开始,同层结点从左到右存放。算法中的front为队头指针。real-为队尾指针。 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->lchild; } if(t->rchild!=NULL)//右子树的根结点入队 { rear=rear%maxsize+1; que[rear]=t->rchild; } 1while(ear=-=front);//队列为空时结束 } }

解析
转载请注明原文地址:https://kaotiyun.com/show/oyZc777K
0

最新回复(0)