文章
67
粉丝
207
获赞
29
访问
34.9k
#include <iostream>
#include<string.h>
using namespace std;
//typedef struct node {
//int data;
//struct node *lchild,*rchild;
//}node,*Tnode;
void postnode(char *pre,char *mid,int *p,int start,int end){
char cc;
int c;
if(pre[*p]!='\n'&&start<=end)
{
cc=pre[*p];
(*p)++;
for(int i=start;i<=end;i++)
{
if(cc==mid[i]){//找到根节点在中序序列中的位置
c=i;
break;
}
}
postnode(pre,mid,p,start,c-1); // 以c为界限把其划分为两半
postnode(pre,mid,p,c+1,end);
cout<< cc;
//后序遍历就是最后遍历根节点
}//if 只有满足这个条件才行
//return;
}
int main(){
char pre[30];
char mid[30];
for(int i=0;i<30;i++){
pre[i]=0;
mid[i]=0;
}
int len,p;
while ( cin >> pre >>mid){
p=0;
len=strlen(pre);
postnode(pre,mid,&p,0,len-1);
cout <<endl;
//清空
for(int i=0;i<30;i++){
pre[i]=0;
mid[i]=0;
}
}
//system("pause");
return 0;
}
有点类似于快速排序算法
1.得到先序和中序序列 2.找到根节点在中序中的位置 ,并以...
登录后发布评论
暂无评论,来抢沙发