题目链接
Problem Description
已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。
Input
连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。
Output
每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。
Example Input
abc,de,g,f,
Example Output
cbegdfa
cgefdba
#include<iostream>
using namespace std;
typedef struct BiTNode{
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
}BiTNode,*BiTree;
//创建二叉树
char s[55];
int i;
BiTree CreateBiTree(){
BiTree root;
char c=s[i++];
if(c==',')
return NULL;
else{
root=new BiTNode;
root->data=c;
root->lchild=CreateBiTree();
root->rchild=CreateBiTree();
}
return root;
}
void InOrderTraverse(BiTree root){
if(root){
InOrderTraverse(root->lchild);
cout<<root->data;
InOrderTraverse(root->rchild);
}
}
void InEndTraverse(BiTree root){
if(root){
InEndTraverse(root->lchild);
InEndTraverse(root->rchild);
cout<<root->data;
}
}
int main(){
while(cin>>s){
i = 0;
BiTree root = CreateBiTree();
InOrderTraverse(root);
cout<<endl;
InEndTraverse(root);
cout<<endl;
}
return 0;
}