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 根据后序遍历和中序遍历建树后DFS

#include #include #include #include #include #include #define PAUSE system("pause") using name...

UVa 548 Tree (中序遍历&后序遍历&DFS)

548 - Tree Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&...

Tree UVA - 548 

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

Tree UVA548

这道题的做法很简单,就是根据二叉树的前序和后序序列建树,然后遍历这棵树。 但是我经过无数次的wa,rte之后才AC的。首先建树就出现问题,之后遍历时用DFS方法也不正确。DFS还是不怎么会用。 #i...

548 - Tree (UVa OJ)

Tree  You are to determine the value of the leaf node in a given binary tree that is the terminal...
  • SIOFive
  • SIOFive
  • 2013年08月04日 14:01
  • 923

UVA_548Tree

这是一个很经典的建树,然而当时不会!!!! 给你一个中序和后序 先建一个二叉树,然后找最优解(最优解就是一个叶子节点到根节点权值最小, 同时本身权值最小) //生成一棵树 int build...
  • xfzero
  • xfzero
  • 2015年09月08日 23:42
  • 121

uva 548 tree

uva 548 tree You are to determine the value of the leaf node in a given binary tree that is the t...

Uva548 Tree 二叉树遍历

/* 题目描述:见紫书155页 方法:这道题的一个收获就是若给出一棵树的中序遍历和后序遍历的结果,可以还原该树。 具体还原方法是后序遍历的最后一个节点是该...
  • jijijix
  • jijijix
  • 2016年08月12日 22:25
  • 75

算法入门经典二叉树DFS题目UVA548 Tree

问题描述:给一棵点带权的二叉树的中序和后序遍历,找一个叶子使得到它的根的路径上的权和最小。输入中没两行表示一棵树,第一行为中序遍历,第二行为后序遍历。 样例输入: 3 2 1 4 5 7 6 3...

uva 548 - Tree

这道是道基础的二叉树题目,可以说帮我好好巩固了二叉树递归遍历的思想,有个地方要注意,就是路径和的最小值一开始初始化一定要足够大,不然会WA,因为一个节点的数字大小最大就有1万了。这个地方一定要注意。还...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 548 Tree
举报原因:
原因补充:

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