#include<iostream> #include<cstring> using namespace std; const int maxn = 100; typedef struct BitNode{ char Data; struct BitNode *Lchild,*rchild; }BitNode,*Bittree; char preArray[maxn]; char InArray[maxn]; void Createtree(Bittree &T, int prS, int prE, int inS, int inE) { T = (Bittree)malloc(sizeof(BitNode)); int Root; T ->Data = preArray[prS]; for (int i = inS; i <= inE; i++) { if(T ->Data == InArray[i]) { Root = i; break; } } if(Root != inS) { Createtree(T->Lchild,prS + 1,(Root - inS) + prS, inS, Root - 1); } else{ T->Lchild = NULL; } if(Root != inE) { Createtree(T->rchild,(Root - inS) + prS+1,prE,Root + 1,inE); } else{ T->rchild = NULL; } } void printorder(Bittree T) { if(T->Lchild !=NULL) { printorder(T->Lchild); } if(T->rchild !=NULL) { printorder(T->rchild); } printf("%c",T->Data); } int main() { while(scanf("%s", preArray) != EOF) { Bittree T; scanf("%s", InArray); Createtree(T,0,strlen(preArray) - 1,0,strlen(InArray) - 1); printorder(T); cout << endl; } }
前序中序 输出后序
猜你喜欢
转载自blog.csdn.net/qq_37602930/article/details/80245778
今日推荐
周排行