【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

后序遍历的最后一个是根节点。
->然后在中序遍历中找到这个节点。
分为左右两段.
然后递归上述操作就好。
题目描述好坑啊。
原来是叶子节点的权值的最小值。。
(叶子节点到根节点的权值和最小的对应的叶子节点的最小权值,,,)

【代码】

#include <bits/stdc++.h>
using namespace std;
#define ll long long const int N = 1e4;
const ll INF = 1e18; string s;
int zx[N+10],hx[N+10],n,g[N+10][2],val[N+10],cnt;
int idx[N+10],cur,ansi = N+10;
ll ans = INF; void init(int a[]){
stringstream ss(s);
n = 1;
while (ss>>a[n]){
n++;
}
n--;
} void dfs1(int x,int l,int r){
val[x] = hx[cur];
int mid = idx[hx[cur]];
cur--;
if (mid<r) {
if (!g[x][1]) g[x][1] = ++cnt;
dfs1(g[x][1],mid+1,r);
} if (l < mid){
if (!g[x][0]) g[x][0] = ++cnt;
dfs1(g[x][0],l,mid-1);
}
} void dfs(int x,ll sum){
if (!g[x][0] && !g[x][1]){
if (sum < ans){
ans = sum;
ansi = val[x];
}else if (ans==sum)
ansi = min(ansi,val[x]);
return;
}
if (g[x][0]) dfs(g[x][0],sum+val[g[x][0]]);
if (g[x][1]) dfs(g[x][1],sum+val[g[x][1]]);
} int main(){
// freopen("rush.txt","r",stdin);
while (getline(cin,s)){
ans = INF,ansi = N+2;
cnt = 1;
memset(g,0,sizeof g);
init(zx);
getline(cin,s);
init(hx);
for (int i = 1;i <= n;i++) idx[zx[i]] = i;
cur = n;
dfs1(1,1,n);
dfs(1,val[1]);
printf("%lld\n",ansi);
}
return 0;
}

【例题 6-8 UVA - 548】Tree的更多相关文章

  1. UVA.548 Tree(二叉树 DFS)

    UVA.548 Tree(二叉树 DFS) 题意分析 给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小.若有多个,输出叶子节点本身权值小的那个节点. 先递归建树,然后D ...

  2. UVa 548 Tree(二叉树最短路径)

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

  3. UVa 548 Tree (建树+前序后序)

    Description You are to determine the value of the leaf node in a given binary tree that is the termi ...

  4. Uva 548 Tree

    0.这是一道利用中序遍历和后序遍历确定二叉树的题目,学会建树 关键点理解这段代码 int build(int L1,int R1,int L2,int R2) { //printf("bui ...

  5. UVa 548 Tree【二叉树的递归遍历】

    题意:给出一颗点带权的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小. 学习的紫书:先将这一棵二叉树建立出来,然后搜索一次找出这样的叶子结点 虽然紫书的思路很清晰= =可是理解起来好困 ...

  6. UVA 548 Tree 建树

    题意: 输入中序和后序的权值,输出哪个叶子使它到根的路径上权和最小. 思路: 输入后建树,然后dfs求最小的叶子. #include<iostream> #include<cstdi ...

  7. uva 548 Tree(通过后序,先序重建树+dfs)

    难点就是重建树,指针參数的传递今天又看了看.应该是曾经没全然弄懂.昨天真没效率,还是不太专心啊.以后一定得慢慢看.不能急躁,保持寻常心,. 分析: 通过兴许序列和中序序列重建树,用到了结构体指针.以及 ...

  8. UVA - 548 Tree(二叉树的递归遍历)

    题意:已知中序后序序列,求一个叶子到根路径上权和最小,如果多解,则叶子权值尽量小. 分析:已知中序后序建树,再dfs求从根到各叶子的权和比较大小 #include<cstdio> #inc ...

  9. UVa 548 Tree(中序遍历+后序遍历)

    给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...

  10. Tree UVA - 548 已知中序遍历和后序遍历,求这颗二叉树。

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

随机推荐

  1. c++中sizeof()的用法介绍

    1.      定义 sizeof是一个操作符(operator). 其作用是返回一个对象或类型所占的内存字节数. 2.      语法 sizeof有三种语法形式: 1)  sizeof (obje ...

  2. ElasticSearch 应用场景

    主要分为如下几点: 1.站内搜索:主要和 Solr 竞争,属于后起之秀. 2.NoSQL Json文档数据库:主要抢占 Mongo 的市场,它在读写性能上优于 Mongo ,同时也支持地理位置查询,还 ...

  3. MATLAB 最优化计算 (一)

    1,令多行命 —— 逗号 VS 分号 2,管理工作空间 —— who , whos , clear , save , load , length (向量显示其长度,矩阵显示行数与列数中的较大数)  s ...

  4. Oracle定义变量、常量

    1 定义变量 declare var_countryname varchar2(50):='中国'; 2 定义常量 con_day constant integer:=365;

  5. LuoguP3254 圆桌问题(最大流)

    题目描述 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,……,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐. ...

  6. VitrualBox虚拟机设置网络桥接方式与windows互相ping通

    一.VitrualBox 选择桥接模式 由于公司服务器对MASK地址访问外网有严格的限制,所以虚拟机里边的HWaddr mask地址没有加入公司的服务器的路由表里边,所以访问不了外网,而网络转换地址( ...

  7. Modbus设备调试工具Winform(包括SRC0001、海康威视、TTS以及各种类型LED的测试)

    1.SRC寄存器读写测试 2.采集数据终端模块(这里是康海时代)调试 3.RS485传感器设备调试 4.LED/TTS/海康威视等展示设备调试 5.Modbus等协议规约资料及4-20mA设备调试 以 ...

  8. 决策树之C4.5算法学习

    决策树<Decision Tree>是一种预測模型,它由决策节点,分支和叶节点三个部分组成. 决策节点代表一个样本測试,通常代表待分类样本的某个属性,在该属性上的不同測试结果代表一个分支: ...

  9. 公众平台调整SSL安全策略,请开发者注意升级

    公众平台调整SSL安全策略,请开发者注意升级 近一段时间HTTPS加密协议SSL曝出高危漏洞,可能导致网络中传输的数据被黑客监听,对用户信息.网络账号密码等安全构成威胁.为保证用户信息以及通信安全,微 ...

  10. 动态链接库DLL的创建生成及调用

    一.背景 最近在做CANTOUSB底层驱动的调用,是调用别人已经封装好的库,看不到别人写的源程序.程序中调用的是隐式调用即 x.h+x.lib+x.dll,其中DLL即是动态链接库(Dynamic L ...