输入
第一行:二叉树中的结点个数n
之后的n行中,每一行包含两个数据 :
number: 代表结点在完全二叉树中的层序编号(根节点编号是1)
value: char 型的数据,代表结点的值
输出
三行
第一行为前序遍历序列
第二行为中序遍历序列
第三行为后序遍历序列
样例输入
3 1 a 2 b 3 c样例输出
abc bac bca
代码:
#include<iostream>
using namespace std;
class SeqTree
{
public:
SeqTree(int n)
{
Creat(n);
}
void Creat(int n);
void PreOrder(int i,int n);
void InOrder(int i,int n);
void PostOrder(int i,int n);
char ch[100];
};
void SeqTree::Creat(int n)
{
char t;
t=(char)n;
ch[0]=t;
for(int i=1;i<=n;i++)
{
cin>>i;
cin>>ch[i];
}
}
void SeqTree::PreOrder(int i,int n)
{
if(ch[i]!='#')
cout<<ch[i];
else return;
if (2*i<=n)
PreOrder(2*i,n);
if (2*i+1<=n)
PreOrder(2*i+1,n);
}
void SeqTree::InOrder(int i,int n)
{
if (2*i<=n)
PreOrder(2*i,n);
if (ch[i]!= '#')
cout<<ch[i];
else return;
if (2*i+1<=n)
PreOrder(2*i+1,n);
}
void SeqTree::PostOrder(int i,int n)
{
if(2*i<=n)
PreOrder(2*i,n);
if(2*i+1<=n)
PreOrder(2*i+1,n);
if(ch[i]!='#')
cout<<ch[i];
else return;
}
int main()
{
int n;
cin>>n;
SeqTree T(n);
T.PreOrder(1,n);
cout<<endl;
T.InOrder(1,n);
cout<<endl;
T.PostOrder(1,n);
cout<<endl;
return 0;
}