【问题描述】
写一种按层次顺序遍历二叉树的算法
实验要求:以二叉链表为存储结构的【输入形式】
将扩展二叉树之前的扫描序列作为输入,制作二叉树。
【输出形式】
输出层次结构中遍历节点的编号。 各层次按从左到右的顺序输出。
【样品输入】
AB#D##C##
【样品输出】
ABCD
//二叉树# include stdio.h # include stdlib.h # include string.h # define maxsize 128//二叉树typedef struct Node{ char data; //数据元素struct Node* lchild; //指向左子节点struct Node* rchild; //指向右边子节点(}BiNode; //struct Node的别名typedef bi node * bi树; //序列团队typedef struct Queue{ int front; //小组头指针(实际上不是指针) int rear; //团队指针(实际上不是指针) BiNode* data[MaxSize]; //存储队中的元素(保存指针的数组) }SqQueue; //struct Queue别名//创建二叉树的BiTree CreateTree () { BiTree T; char x=getchar (; if(x=='# ' )返回t=null; if(x=='n ' )返回t; ELSE{t=(bitree ) malloc ) sizeof (bi node ); T-data=x; T-lchild=CreateTree (; T-rchild=CreateTree (; 返回t; }//层序遍历voidleverorder(bitreet ) {BiNode *q=NULL; //创建并移动临时指针q以访问输出节点SqQueue* Q; //队列qq=(sqqueue* ) malloc (sizeof ) sqqueue ) ); 在//q中获取(创建)地址Q-front=Q-rear=-1; if(t==null )返回; Q-data[ Q-rear]=T; while(q-front!=Q-rear () {q=Q-data[ Q-front]; printf('%c ',q-data ); IF (q-LED!=NULL ) Q-data[ Q-rear]=q-lchild; IF (q-Fild!=NULL ) Q-data[ Q-rear]=q-rchild; } } int main () {BiTree T; t=创建树(; 级别顺序(t; 返回0; }//kydppx月