• uva 548


    二叉树的基本题型,不过对于我来说还是有点考验的……

    #include "stdio.h"

    int inorder[10005];
    int postorder[10005];
    int sum;
    int min1,min2;

    int find(int a,int *p,int n)
    {
     int i;
     for(i=n-1;i>=0;i--)
      if(p[i]==a)
       return i;
      return 0;
    }

    void tree_min_node(int n,int *d1,int *d2,int sum)
    {
     int k;
     if(n<=0) return;
     
     k=find(d1[n-1],d2,n);
     sum+=d1[n-1];
     if(k<=0&&n-1-k<=0)
     {
      if(sum==min1)
       min2=(d1[n-1]<min2?d1[n-1]:min2);
            else if(sum<min1)
            {
                min1=sum;
                min2=d1[n-1];
            }
            return ;
     }

     tree_min_node(k,d1,d2,sum);
     tree_min_node(n-1-k,d1+k,d2+k+1,sum);
    }

    int main()
    {
     int n,i;
     char ch;

     while(scanf("%d",&inorder[0])==1)
     {
      ch=getchar();
      i=1;
      min1=100000;
      min2=100000;

      while(ch!='\n')
      {
       scanf("%d",&inorder[i]);
       i++;
       ch=getchar();
      }
      n=i;

      for(i=0;i<n;i++)
      {
       scanf("%d",&postorder[i]);
      }

      tree_min_node(n,postorder,inorder,0);

      printf("%d\n",min2);
     }

     return 0;
    }

  • 相关阅读:
    代理模式
    适配器模式
    策略模式
    原型模式
    内存溢出
    jvm常用参数
    单例模式
    抽象工厂
    工厂方法模式
    选择器代码
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2336851.html
Copyright © 2020-2023  润新知