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

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

2017-10-29 10:40 344 查看

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 1

typedef 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;
}



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