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

来源:互联网 发布:数码宝贝网络侦探进化 编辑:程序博客网 时间:2024/06/16 16:25

Problem Description

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

Input

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

Output

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

 

Example Input

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

Example Output

cbegdfacgefdba
#include<stdio.h>#include<string.h>#include<stdlib.h>#define OVERFLOW -2#define ERROR -1#define OK 1typedef int Statu;typedef char Elemtype;Elemtype str[60];int i;typedef struct Binode{    Elemtype data;    struct Binode *lchild, *rchild;}BiTnode, *BiTree;Statu CreatBitree(BiTree &T);  // 建树Statu Inorder(BiTree T);  // 中序输出Statu Post(BiTree T);    // 后序输出int main(){    BiTree T;    while(gets(str))    {        i = 0;        CreatBitree(T);        Inorder(T);        printf("\n");        Post(T);        printf("\n");    }    return 0;}Statu CreatBitree(BiTree &T){    if(str[i++] == ',')        T = NULL;    else    {        T = (BiTree)malloc(sizeof(BiTnode));        T -> data = str[i - 1];        CreatBitree(T -> lchild);        CreatBitree(T -> rchild);    }    return OK;}Statu Inorder(BiTree T){    if(T)    {        Inorder(T -> lchild);        printf("%c", T -> data);        Inorder(T -> rchild);    }    return OK;}Statu Post(BiTree T){    if(T)    {        Post(T -> lchild);        Post(T -> rchild);        printf("%c", T -> data);    }    return OK;}


阅读全文
0 0