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

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

2016-07-22 18:41 330 查看

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


Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

输入

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

输出

每组输入数据对应输出2行:

第1行输出中序遍历序列;

第2行输出后序遍历序列。

 

示例输入

abc,,de,g,,f,,,


示例输出

cbegdfacgefdba


提示

 

来源

#include<bits/stdc++.h>

using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

char s[100];
int a;
void Visit(BiTree T){//输出函数
if(T->data != ','){
cout<<T->data;
}
}
void midorder(BiTree T)//递归中序遍历
{
if(T)
{
midorder(T->lchild);
Visit(T);
midorder(T->rchild);
}
}

void postorder(BiTree T)//递归后序遍历
{
if(T)
{
postorder(T->lchild);
postorder(T->rchild);
Visit(T);
}
}

int CreateBiTree(BiTree &T){//建立二叉树
char data;
data=s[a++];
if(data == ','){
T = NULL;
}
else{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = data;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 0;
}

int main()
{
BiTree T;
while(cin>>s)
{
a=0;
CreateBiTree(T);
midorder(T);
cout<<endl;
postorder(T);
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: