已知前序中序求后序
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
#define N 10000
char inor[N+10], preor[N+10];
int n;
void BinaryTree(char *inor, char *preor, int l)
{
if(l == 0)
return ;
char x = *preor;
int rootindex;
for(rootindex = 0;rootindex < l;rootindex++)
{
if(inor[rootindex] == x)
break;
}
BinaryTree(inor, preor+1, rootindex);//left_childTree
BinaryTree(inor+rootindex+1, preor+rootindex+1, l-(rootindex+1));//right_childTree
cout<< x;
return;
}
int main()
{
while(cin >> n)
{
cin >> inor >> preor;
BinaryTree(inor, preor, n);
cout << "\n";
}
return 0;
}
已知后序中序求前序
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
#define N 10000
char inor[N+10], aftor[N+10];
int n;
void BinaryTree(char * inor, char * aftor, int l)
{
if(l == 0)
return ;
char x = *(aftor+l-1);
cout << x;
int rootindex;
for(rootindex = 0; rootindex < l; rootindex++)
{
if(inor[rootindex] == x)
break;
}
BinaryTree(inor, aftor, rootindex);//left_childTree
BinaryTree(inor+rootindex+1, aftor+rootindex, l-(rootindex+1));//right_childTree
return ;
}
int main()
{
while(cin >> n)
{
cin >> inor >> aftor;
BinaryTree(inor, aftor, n);
cout << "\n";
}
return 0;
}