层次遍历

数据结构实验之二叉树五:层序遍历

Time Limit: 1000MS Memory limit: 65536K

题目描述

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。

输入

  输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是 一个长度小于50个字符的字符串。

输出

  输出二叉树的层次遍历序列。

示例输入

2
abd,,eg,,,cf,,,
xnl,,i,,u,,

示例输出

abcdefg

xnuli

队列法:

#include #include #include #include using namespace std; char p[100];int i; struct node {     char data;     struct node *l,*r; }; struct node *creat(struct node *q) { if(p[i++]==',') q=NULL; else{q=(struct node *)malloc(sizeof(struct node)); q->data=p[i-1]; q->l=creat(q->l); q->r=creat(q->r); } return q; } void levertravel(struct node *t)     {         queueq;         if(t!=NULL)         q.push(t);         struct node *b;         while(!q.empty())         {             b=q.front();             printf("%c",b->data);             q.pop();             if(b->l)                 q.push(b->l);             if(b->r)                 q.push(b->r);         }     } int main() {int j; scanf("%d",&j);   while(j--)   {scanf("%s",p);   int c;i=0;       struct node *root;       root=(struct node *)malloc(sizeof(struct node));       root=creat(root);       levertravel(root);printf("\n");   }   return 0; }

你可能感兴趣的:(层次遍历)