zoukankan      html  css  js  c++  java
  • uvaTree(二叉树)

    题目链接:

    lrj--p155。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<string>
     5 #include<sstream>
     6 using namespace std;
     7 const int maxn=10010;
     8 int post[maxn],med[maxn],lson[maxn],rson[maxn];
     9 int best,best_sum;
    10 
    11 int build(int l1,int r1,int l2,int r2 )
    12 {
    13     if(l1>r1) return 0;
    14     int root=post[r2];
    15     int p=l1;
    16     while(med[p]!=root) p++;
    17     int cnt=p-l1;  //左子树
    18     lson[root]=build(l1,p-1,l2,l2+cnt-1);
    19     rson[root]=build(p+1,r1,l2+cnt,r2-1);
    20     return root;
    21 }
    22 void dfs(int u,int sum)
    23 {
    24     sum+=u;
    25     if(!lson[u]&&!rson[u]) {
    26         if(sum<best_sum||sum==best_sum&&u<best) {best=u;best_sum=sum;}
    27 
    28     }
    29 
    30     if(lson[u]) dfs(lson[u],sum);
    31     if(rson[u]) dfs(rson[u],sum);
    32 }
    33 string s1;
    34 int main()
    35 {
    36     while(getline(cin,s1))
    37     {
    38         int v;
    39         stringstream ss(s1);
    40         int c=0;
    41         while(ss>>v) med[c++]=v;
    42         int len=c;
    43         for(int i=0;i<len;i++)
    44             cin>>post[i];
    45         build(0,len-1,0,len-1);
    46         best_sum=100000000;
    47         dfs(post[len-1],0);
    48         cout<<best<<"
    ";
    49         getchar();
    50 
    51 
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    模块的搜索路径
    循环导入问题
    模块的四种形式
    匿名函数
    面向过程编程
    内置函数
    名称空间和作用域
    函数嵌套
    函数对象
    可变长参数
  • 原文地址:https://www.cnblogs.com/yijiull/p/6613086.html
Copyright © 2011-2022 走看看