按层次遍历二叉树(4)
发布时间:2021-06-08
发布时间:2021-06-08
武汉理工大学课程设计
CreateBinTree(T->lchild); CreateBinTree(T->rchild); } }
3.2.2 遍历二叉树
void LevleOrder(BinTree T){ //从第一层开始,从左到右
BinTree Queue[max],p; //用一维数组表示队列,front和rear分别表示队首和队尾指针 int front,rear; front=rear=0;
if (T) //若树非空 {
Queue[rear++]=T; //根结点入队列
while (front!=rear){ // 队列非空 p=Queue[front++]; // 队首元素出队列,并访问这个结点 printf("%c",p->data);
if (p->lchild!=NULL) Queue[rear++]=p->lchild; //左子树非空,入队列 if (p->rchild!=NULL) Queue[rear++]=p->rchild; } }
}
3.2.3 按要求格式输出已建立的二叉树
void Print_BinTree(BinTree T,int i ) // i表示结点所在层次,初次调用时i=0
{
if(T->rchild) Print_BinTree(T->rchild,i+1); //函数递归 for(j=1;j<=i;j++) printf(" "); //打印i个空格以表示出层次 printf("%c\n",T->data); //打印T元素,换行 if(T->lchild) Print_BiTree(T->lchild,i+1); }
3.3 测试程序
图1:测试二叉树
如图所示二叉树,按先序遍历顺序输入,AB#D##CE#F###。其中”#”代表空格,理论上按层次遍历的结