按层次遍历二叉树(6)
发布时间:2021-06-08
发布时间:2021-06-08
武汉理工大学课程设计
void LevleOrder(BinTree T){ BinTree Queue[max],p; 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; } } }
//按要求输出二叉树
void Print_BinTree(BinTree T,int i ) //本题的关键所在, i表示结点所在层次,初次调用时i=0 {
if(T->rchild) Print_BinTree(T->rchild,i+1); //本题的难点,函数递归来建立层次。 for(int j=1;j<=i;j++) printf(" "); //打印i个空格以表示出层次 printf("%c\n",T->data); //打印T元素,换行 if(T->lchild) Print_BinTree(T->lchild,i+1); }
int main() {
BinTree T;int i=0;
printf("\n创建二叉树\n"); CreateBinTree (T);
printf("\n层次遍历二叉树 并输出遍历结果\n"); LevleOrder(T);
printf("\n按树形打印输出二叉树\n"); Print_BinTree(T, i); return 0; }
6.2 运行结果