SDUT-数据结构实验之二叉树二:遍历二叉树

来源:互联网 发布:2017广电禁止网络电视 编辑:程序博客网 时间:2024/05/16 08:35

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

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。

 

Example Input

abc,,de,g,,f,,,

Example Output

cbegdfacgefdba

Hint

 

Author

//两种二叉树创建模式(为什么一定要使用二级指针:http://blog.chinaunix.net/uid-26983585-id-3219788.html)//1.于main函数中定义一个tree指针,注意这是个二叉树节点的指针类型;然后将这个参数传递给一个Creat函数,在该函数中递归创建二叉树#include <bits/stdc++.h>typedef struct node{    char data;    struct node*left;    struct node*right;}tree;int flag;char str[55];tree*creat(tree*rt){    if(str[flag]==',')    {        flag++;        return NULL;    }    else    {        rt=(tree*)malloc(sizeof(tree));        rt->data=str[flag++];        rt->left=creat(rt->left);        rt->right=creat(rt->right);    }    return rt;}void mid(tree*rt){    if(rt)    {        mid(rt->left);        printf("%c",rt->data);        mid(rt->right);    }}void last(tree*rt){    if(rt)    {        last(rt->left);last(rt->right);        printf("%c",rt->data);    }}int main(){    tree*rt;    while(scanf("%s", str)!=EOF)    {        flag=0;        rt=creat(rt);        mid(rt);        printf("\n");        last(rt);        printf("\n");    }    return 0;}//2.可以直接在Creat函数中创建二叉树,并返回二叉树的根指针;如:rt=Creat();#include <bits/stdc++.h>typedef struct node{    char data;    struct node*left;    struct node*right;}tree;int flag;char str[55];tree*rt;tree*creat(){     tree*rt=NULL;    if(str[flag]==',')    {        flag++;        return NULL;    }    else    {        rt=(tree*)malloc(sizeof(tree));        rt->data=str[flag++];        rt->left=creat();        rt->right=creat();    }    return rt;}void mid(tree*rt){    if(rt)    {        mid(rt->left);        printf("%c",rt->data);        mid(rt->right);    }}void last(tree*rt){    if(rt)    {        last(rt->left);last(rt->right);        printf("%c",rt->data);    }}int main(){    while(scanf("%s", str)!=EOF)    {        flag=0;        rt=creat();        mid(rt);        printf("\n");        last(rt);        printf("\n");    }    return 0;}






阅读全文
0 0
原创粉丝点击