题目链接:点击打开链接
数据结构实验之二叉树二:遍历二叉树
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
输入
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
输出
每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfacgefdba
代码实现:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
typedef char element;
typedef struct node
{
element data;
struct node *lchild,*rchild;
} Tree;
Tree *T;
int i;
char s[110];
Tree *Creat(Tree *T)///建树
{
if(s[i++] == ',')
T = NULL;
else
{
T = new Tree;
T->data = s[i-1];
T->lchild = Creat(T->lchild);///左子树
T->rchild = Creat(T->rchild);///右子树
}
return T;
}
void Inorder(Tree *T)///中序遍历
{
if(T != NULL)
{
Inorder(T->lchild);
printf("%c",T->data);
Inorder(T->rchild);
}
}
void Postorder(Tree *T)///后序遍历
{
if(T != NULL)
{
Postorder(T->lchild);
Postorder(T->rchild);
printf("%c",T->data);
}
}
int main()
{
while(~scanf("%s",s))
{
i = 0;
Tree *P;
P = Creat(T);
Inorder(P);
printf("\n");
Postorder(P);
printf("\n");
}
return 0;
}