数据结构实验之二叉树二:遍历二叉树
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。
Sample Input
abc,de,g,f,
Sample Output
cbegdfa
cgefdba
Hint
Source
xam
题目链接
#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
char data;
struct node *left;
struct node *right;
}Node;
int m;
Node *creat(char a[],Node *&tree)
{
if(a[m]==',')
{
m++;
tree=NULL ;
}
else
{
tree=(Node *)malloc(sizeof(Node));
tree->data=a[m];
m++;
creat(a,tree->left);
creat(a,tree->right);
}
return tree;
}
void zhongsort(Node *tree)
{
if(tree)
{
zhongsort(tree->left);
printf("%c",tree->data);
zhongsort(tree->right);
}
}
void housort(Node *tree)
{
if(tree)
{
housort(tree->left);
housort(tree->right);
printf("%c",tree->data);
}
}
int main()
{
char a[100];
while(scanf("%s",a)!=EOF)
{
m=0;
Node *tree;
Node *k;
k=creat(a,tree);
zhongsort(k);
printf("\n");
housort(tree);
printf("\n");
}
}