• 第六章部分例题


     1 #include <iostream>
     2 #include <sstream>
     3 
     4 using namespace std;
     5 
     6 const int maxn=100000;
     7 int n;
     8 int postorder[maxn],inorder[maxn];
     9 int lh[maxn],rh[maxn];
    10 
    11 
    12 bool read_list(int* a)
    13 {
    14     string line;
    15 
    16     if(!getline(cin,line)) return false;
    17                                 /*利用stringstream来构造字符串流读入一行数据*/
    18     stringstream ss(line);
    19 
    20     n=0;
    21     int num;
    22     while(ss>>num) a[n++]=num;
    23 
    24     return n>0;
    25 }
    26 
    27 int built_tree(int l1,int r1,int l2,int r2)
    28 {                              /*递归建立二叉树返回数根,用各个节点的值来标志*/
    29     if(l1>r1) return 0;
    30 
    31     int root=postorder[r2];
    32 
    33     int p=l1;
    34 
    35     while(inorder[p]!=root) p++;
    36 
    37     int cnt=p-l1;
    38 
    39     lh[root]=built_tree(l1,p-1,l2,l2+cnt-1);
    40     rh[root]=built_tree(p+1,r1,l2+cnt,r2-1);
    41 
    42     return root;
    43 }
    44 
    45 int best_sum,best;
    46 
    47 void dfs(int u,int sum)
    48 {                             /*深度优先,如果是叶子节点就进行判断*/
    49     sum+=u;
    50 
    51     if(!lh[u] && !rh[u])
    52     {
    53         if(sum<best_sum || (sum==best_sum && u<best))
    54         {
    55             best_sum=sum;
    56             best=u;
    57         }
    58     }
    59 
    60     if(lh[u]) dfs(lh[u],sum);
    61     if(rh[u]) dfs(rh[u],sum);
    62 }
    63 
    64 
    65 int main()
    66 {
    67 
    68     while(read_list(inorder))
    69     {
    70         read_list(postorder);
    71         built_tree(0,n-1,0,n-1);
    72 
    73         int u=0,sum=0;
    74 
    75         best=u;
    76         best_sum=100000000;
    77 
    78         dfs(postorder[n-1],sum);
    79 
    80         cout<<best<<endl;
    81     }
    82 
    83     return 0;
    84 }
    Yosoro
  • 相关阅读:
    7个最好的免费杀毒软件下载
    VMware虚拟机扩容
    tomcat的JK和JK2
    面向对象——接口
    JPA入门样例(採用JPA的hibernate实现版本号)
    JAVA数组的定义及用法
    Styles and Themes
    OpenSSL再曝CCS注入漏洞-心伤未愈又成筛子
    纯文本抽出程序库DMC TEXT FILTER
    数据结构课程设计之通讯录管理系统
  • 原文地址:https://www.cnblogs.com/tclan126/p/7259801.html
Copyright © 2020-2023  润新知