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

来源:互联网 发布:dijkstra c语言 编辑:程序博客网 时间:2024/06/06 13:01

数据结构实验之二叉树五:层序遍历
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description

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

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

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

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

abcdefg
xnuli
Hint

Author

xam

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAX = 205;typedef struct node{    char data;    struct node *cl, *cr;} tree, *ptree;char str[MAX];int i;void gettreepre(ptree &root){    char ch;    ch = str[i++];    if (ch == ',')    {        root = NULL;    }    else    {        root = new tree;        root->data = ch;        gettreepre(root->cl);        gettreepre(root->cr);    }}void cengxuorder(ptree root){    if (root == NULL)    {        cout << endl;        return;    }    ptree arr[MAX];    int front, rear;    front = rear = 0;    arr[rear++] = root;    while (front < rear)    {        cout << arr[front]->data;        if (arr[front]->cl != NULL)            arr[rear++] = arr[front]->cl;        if (arr[front]->cr != NULL)            arr[rear++] = arr[front]->cr;        front++;    }    cout << endl;}int main(){    int n;    cin >> n;    while (n--)    {        cin >> str;        i = 0;        ptree root = NULL;        gettreepre(root);        cengxuorder(root);    }    return 0;}