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

来源:互联网 发布:b2b2c php开源 编辑:程序博客网 时间:2024/06/05 22:57

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

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic

Problem Description

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

Input

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

Output

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

Example Input

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

Example Output

abcdefgxnuli
借助队列实现层序遍历
#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct node{                char data;struct node *lchild, *rchild;}*bitTree;int cnt = 0;char str[100];void createTree(bitTree &root, char str[]){char ch = str[cnt++];if(ch == ',')root = NULL;else {root = new node;root->data = ch;createTree(root->lchild, str);createTree(root->rchild, str);}}void getleaf(bitTree root){if(root){        if(root->lchild ==NULL&&root->rchild == NULL)            printf("%c", root->data);        else{    getleaf(root->lchild);            getleaf(root->rchild);}}}void cengxu(bitTree &root) {  int in = 0, out = 0;  struct node *a[1050];  a[in ++] = root;  while(in > out)  {    if (a[out] != NULL)     {       printf("%c",a[out] -> data);       a[in ++] = a[out] -> lchild;       a[in ++] = a[out] -> rchild;     }     out ++;  } }int main(){    int m;    scanf("%d", &m);while(m--){        scanf("%s", str);cnt = 0;bitTree root;createTree(root, str);//getleaf(root);cengxu(root);printf("\n");}return 0;}


原创粉丝点击