UVA 548 Tree

原创 2013年07月07日 16:01:49

~~题目链接~~


题目大意:给出前序遍历和后序遍历, 求出树中根节点到叶节点的最短路径上叶节点的值, 如果有多条选叶节点最小的。



code:

#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#define inf 0x7fffffff
using namespace std;
int ans = 0, Min = 0;
vector<int> V1, V2;

void build(int n, int s1, int s2, int sum)
{
    if(n<=0) return ;
    if(n == 1)
    {
        if(sum+V1[s1]<Min)
        {
            ans = V1[s1];
            Min = sum+V1[s1];
        }
        if(sum+V1[s1] == Min && ans>V1[s1])
            ans = V1[s1];
        return ;
    }
    vector<int>::iterator it = find(V1.begin(), V1.end(), V2[s2]);
    int s3 = it-V1.begin();//在中序树中的跟节点位置
    sum += V2[s2];
    build(s3-s1, s1, s2-(n-(s3-s1+1))-1, sum);
    build(n-(s3-s1+1), s3+1, s2-1, sum);
}

int main()
{
    int i = 0;
    string s1, s2;
    while(getline(cin, s1))
    {
        ans = 0;
        Min = inf;
        V1.clear(), V2.clear();
        stringstream ss;
        ss<<s1;
        while(ss>>i) V1.push_back(i);
        ss.clear();
        getline(cin, s2);
        ss<<s2;
        while(ss>>i) V2.push_back(i);
        build(V1.size(), 0, V1.size()-1, 0);
        cout<<ans<<endl;
    }
    return 0;
}


Uva - 548 - Tree

这道题目的输入需要注意,一般的都是先说测试数据包含多少个数据,比如中序遍历有多少个结点,再输入,而这里直接输入,回车判断是否结束,所以输入的时候可以先读一行,再用流存入数组。题目说了结点的权值各不相同...
  • zyq522376829
  • zyq522376829
  • 2015-06-15 23:05:41
  • 582

uva 548 tree(中序后序还原树)

Tree  You are to determine the value of the leaf node in a given binary tree that is the term...
  • u011328934
  • u011328934
  • 2013-07-16 12:52:03
  • 1523

UVA - 548 Tree 二叉树

题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19105 题意:给定一棵二叉树的中序和后序序列,求从根节点到所有叶...
  • discreeter
  • discreeter
  • 2016-07-10 14:43:53
  • 334

UVA 548-Tree(二叉树)

题目大意:给出二叉树的中序遍历和后序遍历,求一个叶子结点,它到根的距离最短,若有多个解叶子权值应该最小。 递归遍历,每次找到当次递归的根然后递归左子树和右子树,后序遍历的最后一个结点就是根,...
  • dilemma729
  • dilemma729
  • 2015-02-24 18:26:45
  • 333

关于"树(Tree, UVa548)“的记录

代码是书上的,感觉比较简洁,故放上#include #include #include using namespace std; const int maxs = 100; int post_orde...
  • u014428298
  • u014428298
  • 2015-09-27 17:43:14
  • 169

Tree UVA - 548 

题目地址:UVA-548 一道炒鸡简单的题目硬生生WA了我十多次,最后发现是 --n和 n--搞反了。。。 练习的时候没什么。。 比赛的时候千万不要出现这种情况了。。 题目挺简单的,题目给出中...
  • qq_32190139
  • qq_32190139
  • 2017-01-20 00:33:35
  • 94

uva548Tree

You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...
  • qq_33665647
  • qq_33665647
  • 2016-05-06 15:28:05
  • 491

例题6-8 树 UVa 548 Tree

算法竞赛入门经典例题6-8 UVa 548 非常好的练习遍历二叉树的题 递归遍历
  • a20180825
  • a20180825
  • 2017-08-02 18:32:04
  • 5133

UVA 548 Tree(二叉树的建立)

Tree  You are to determine the value of the leaf node in a given binary tree that is the ...
  • HelloWorld10086
  • HelloWorld10086
  • 2014-07-26 21:03:58
  • 651

uva548 -- Tree

由于uva实在上不去,我就不贴题目了,题目链接。 这一题输入二叉树的中序序列和后序序列,让求一个叶子结点使此叶子节点到根节点路径的权值和最小。这题主要有以下几个问题:1、输入方式;2、根据中序和后序序...
  • BestFSQ
  • BestFSQ
  • 2017-04-12 22:31:09
  • 279
收藏助手
不良信息举报
您举报文章:UVA 548 Tree
举报原因:
原因补充:

(最多只允许输入30个字)