JOJ 1329: Tree(重建二叉树)

来源:互联网 发布:淘宝交纳保证金 编辑:程序博客网 时间:2024/04/30 20:38
给出二叉树的中序和后序遍历,求树的根到叶的最小结点和的路径上的叶节点的值;思路是在后序找出根,在中序遍历中找出其位置,确定左右儿子,递归建树,在建树的过程直接构建所求。
#include <cstdio>#include <string.h>const int maxn=255;const int Inf=0x7fffffff;char instr[maxn];char pstr[maxn];int num[10],cnt,head[maxn];int node1 [50];int node2 [50];struct edge{    int v,adj,next;}e[maxn];int min,ans;void build (int n , int* n1 , int * n2,int sum){        if(n==0)return ;    sum+=*(n2+n-1);    if(n==1)    {        if(min>sum)        {min=sum ; ans=(*n1);}        return ;    }    int pos=-1;    for (int i=0 ; i<n ; ++i)if(n1[i]==n2[n-1]){pos=i;break;}    //printf("pos=%d\n",pos);    build(pos,n1,n2,sum);    build(n-pos-1,n1+pos+1,n2+pos,sum);    //printf("%d \n",node2[n-1]);}int main (){    int n,t,i;    scanf("%d",&t);    getchar();    while (t--)    {        min=Inf;        cnt=0;        memset (head,-1,sizeof(head));        gets(instr);        gets(pstr);        int len =strlen(instr);        int len2 =strlen(pstr);        int t,cnt=0,p;        for (i=0 ,p=0; i<len ; i++)        {            if(instr[i+1]==' ' ||instr[i+1]=='\0')            {                num[p++]=instr[i]-'0';                if(p==1)node1[cnt]=num[0];                if(p==2)node1[cnt]=num[0]*10+num[1];                if(p==3)node1[cnt]=num[0]*100+num[1]*10+num[2];                cnt++;                p=0;            }            else             if(instr[i]!=' ')num[p++]=instr[i]-'0';            //printf("%d\n",num[p]);        }        cnt=0;        for (i=0 ,p=0; i<len ; i++)        {            if(pstr[i+1]==' ' || pstr[i+1]=='\0')            {                num[p++]=pstr[i]-'0';                if(p==1)node2[cnt]=num[0];                if(p==2)node2[cnt]=num[0]*10+num[1];                if(p==3)node2[cnt]=num[0]*100+num[1]*10+num[2];                cnt++;                p=0;            }            else if(pstr[i]!=' ')num[p++]=pstr[i]-'0';        }        for (i= 0 ; i< cnt ;++i )        build(cnt,node1,node2,0);        printf("%d\n",ans);    }    return 0;}

 
原创粉丝点击