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

来源:互联网 发布:美国宝宝的好处知乎 编辑:程序博客网 时间:2024/05/18 07:29

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


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 <stdlib.h>char str[51];int i;typedef struct BiTNode{    int data;    struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTree CreateBiTree(BiTree T){    char temp;    temp=str[i++];    if(temp==',')        T=NULL;    else{        T=(BiTree)malloc(sizeof(BiTNode));        T->data=temp;        T->lchild=CreateBiTree(T->lchild);        T->rchild=CreateBiTree(T->rchild);    }    return T;}void InOrderTraverse(BiTree T){    if(!T)        return;    else{        InOrderTraverse(T->lchild);//递归遍历左子树        printf("%c",T->data);//访问根节点        InOrderTraverse(T->rchild);//递归遍历右子树    }}void PostOrderTraverse(BiTree T){    if(!T)        return;    else{          PostOrderTraverse(T->lchild);//递归遍历左子树          PostOrderTraverse(T->rchild);//递归遍历右子树          printf("%c",T->data);//访问根节点    }}int main(){    while(~scanf("%s",str))    {        BiTree T;        T=(BiTree)malloc(sizeof(BiTNode));        i=0;        T=CreateBiTree(T);        InOrderTraverse(T);        printf("\n");        PostOrderTraverse(T);        printf("\n");    }    return 0;}
阅读全文
0 0