#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct bitnode{ //二叉树节点结构体
char data;
bitnode* right;
bitnode* left;
};
bitnode* makebitree(char pre[],char in[],int h1,int l1,int h2,int l2){ // 二叉树构造
bitnode* root=new bitnode;
int i;
int llen=i-h2;
int rlen=l2-i;
root->data=pre[h1];
for(i=h2;in[i]!=root->data;i++);
if(llen){
root->left=makebitree(pre,in,h1+1,h1+llen,h2,h2+llen-1);
}
else{
root->left=NULL;
}
if(rlen){
root->right=makebitree(pre,in,l1-rlen+1,l1,l2-rlen+1,l2);
}
else{
root->right=NULL;
}
return root;
}
void lastorder(bitnode* root){ //输出后序序列
if(root!=NULL){
lastorder(root->left);
lastorder(root->right);
printf("%c",root->data);
}
}
int main(){ // 主函数
char pre[100];
char in[100];
gets(pre);
gets(in);
int len=strlen(pre);
bitnode* root=NULL;
root=makebitree(pre,in,0,len-1,0,len-1);
lastorder(root);
return 0;
}
是一个二叉树算法,输入前序和中序序列,出后序的序列,但是不知道为什么就是出不了结果。。。