您的位置:首页 > 理论基础 > 数据结构算法

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

2016-08-12 14:45 489 查看

题目描述

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

输入

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

输出

每组输入数据对应输出2行:

第1行输出中序遍历序列;

第2行输出后序遍历序列。

 

示例输入

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


示例输出

cbegdfacgefdba


#include <stdio.h>

#include <stdlib.h>

char st[55];

int i;

typedef struct node

{

    int data;

    struct node *lc;

    struct node *rc;

}*BiTree;

BiTree creat()

{

    char c;

    BiTree T;

    c = st[i++];

    if(c==',')

        T = NULL;

    else

    {

        T = (BiTree)malloc(sizeof(BiTree));

        T->data = c;

        T->lc = creat();

        T->rc = creat();

    }

    return T;

}

void visit(char c)

{

    if(c)

        printf("%c",c);

}

void Intrav(BiTree T)

{

    if(T)

    {

        Intrav(T->lc);

        visit(T->data);

        Intrav(T->rc);

    }

}

void Postrav(BiTree T)

{

    if(T)

    {

        Postrav(T->lc);

        Postrav(T->rc);

        visit(T->data);

    }

}

int main()

{

    BiTree T;

    while(scanf("%s",st)!=EOF)

    {

        i = 0;

        T = creat();

        Intrav(T);

        printf("\n");

        Postrav(T);

        printf("\n");

    }

    return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息