Tree【 UVA - 548 】

UVA - 548:Tree UVA - 548:Tree 来源: 标签: 参考资料: 相似题目: 题目 UVA - 548:Tree 输入 The input file will contain a description of the binary tree given as the inorder and postorder traversal sequenc... 阅读详情

You are to determine the value of the leaf node in a given binary tree that is the terminal node of a path of least value from the root of the binary tree to any leaf. The value of a path is the sum of values of nodes along that path.

Input

The input file will contain a description of the binary tree given as the inorder and postorder traversal sequences of that tree. Your program will read two line (until end of file) from the input file. The first line will contain the sequence of values associated with an inorder traversal of the tree and the second line will contain the sequence of values associated with a postorder traversal of the tree. All values will be different, greater than zero and less than 10000. You may assume that no binary tree will have more than 10000 nodes or less than 1 node.

Output

For each tree description you should output the value of the leaf node of a path of least value. In the case of multiple paths of least value you should pick the one with the least value on the terminal node.

Sample Input

3 2 1 4 5 7 6

3 1 2 5 6 7 4

7 8 11 3 5 16 12 18

8 3 11 7 16 18 12 5

255

255

Sample Output

1

3

255

题意:

给出二叉搜索树的中序,后序遍历结果,

求原树中,从根节点到叶节点的最短距离,有不同结果取叶节点最小的那个值。

代码:

#include<cstdio>
#include<cstring>
#include<malloc.h>

int w,minn,flag;
int zh[100100],ho[100100];
char s[100100];

struct node
{
    int v;
    node *lch,*rch;
};

node *insert(int x,int y,int l)
{
      if(l<=0)
        return NULL;   //空 
        
    node *root=(node*)malloc(sizeof(node));
    root->v=ho[x];
    int p;
    for(int i=y; i>=0; i--)
        if(zh[i]==ho[x])       //在中序遍历中找到数值一样的数的位置
        {
            p=i;
            break;
        }
    int k=y-p;
    root->rch=insert(x-1,y,k);
    root->lch=insert(x-k-1,p-1,l-k-1);
    return root;
}

int dfs(node *root,int sum)
{
    if(root!=NULL)
    {
        int x=dfs(root->lch,sum+root->v);
        int y=dfs(root->rch,sum+root->v);
        
        if(x&&y)
        {
            if(sum+root->v<minn)
            {
                minn=sum+root->v;
                flag=root->v;
            }
            else if(sum+root->v==minn)      //长度一样,取叶节点小的值

                flag=root->v<flag?root->v:flag;
        }
        return 0;
    }
    else
        return 1;
}

int main()
{
    while(gets(s))
    {
        int l=strlen(s);
        int a=0,b=0;
        for(int i=0; i<l; i++)
        {
            if(s[i]==' ')
            {
                zh[b++]=a;
                a=0;
            }
            
            else
                a=a*10+s[i]-'0';
        }
        
        zh[b++]=a;
        for(int i=0; i<b; i++)
            scanf("%d",&ho[i]);
            
        getchar();
        w=b;
        
        node *root=(node*)malloc(sizeof(node));
        root=insert(b-1,b-1,b);
        minn=0x3f3f3f3f;
        int x=dfs(root,0);
        printf("%d\n",flag);
    }
    return 0;
}




 

张正友标定法_单目-线激光三维扫描系统中光刀平面的标定 单目-线激光三维扫描系统中光刀平面的标定线结构光有结构简单、精度高、测速快等特点,被广泛应用于三维重建领域。线结构光三维扫描系统由一个相机和一个线结构光投射器构成,线结构光投射器将线结构光投射到被测物体表面,相机采集带有线激光的被测物体图像,根据相机和线激光投射器间的相对位置关系,使用激光三角法计算出激光线上的点在相机坐标系下的坐标。激光三角法原理如下图所示,线激光投射的扇形区域可以看作是一个平面... 阅读详情

相关推荐

Bentley ORD(openroads designer) 二次开发(BIM)第七节 在ORD SDK中调用MicroStation SDK

从课程刚开始的时候我们就通过学习,了解了ORD的开发是基于MicroStation的,ORD SDK的接口发布的时候也对MicroStation SDK也做了一次发布。这一章将以我们对ORD SDK知识的了解为基础,使用ORD SDK的接口读取道路几何信息、计算桩号,然后再使用MicroStation SDK 读取地形数据和计算投影点的位置,并创建一组方柱形状的Soild。计算方柱底部坐标要经过两大步骤,通过路线的桩号及偏移距离去定位方柱的平面位置,通过方柱的平面位置计算数字地面模型上的投影点的坐标。

chen286990651的博客 880

【紫书】Tree UVA - 548 静态建树dfs

题意:给你中序后序 求某叶子节点使得从根到该节点权值和最小。若存在多个,输出其权值最小的那个。 题解:先建树,然后暴力dfs/bfs所有路径,取min 技巧:递归传参数,l1,r1,l2,r2, sum,root, 代码: #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include<stdio.h> ...

Vincent19999999的博客 218

手把手教你用CH582的USB0/1双接口玩转CherryUSB协议栈(附完整代码)

本文深入解析CH582双USB接口硬件架构,详细讲解如何通过CherryUSB协议栈实现双接口协同工作,包括中断处理设计、端点资源分配和复合设备描述符配置。提供HID+CDC复合设备实战案例,并分享高级调试技巧与性能优化方法,帮助开发者充分利用CH582的USB0/1双接口潜力。

weixin_42525637的博客 264

Tree UVA - 548 (二叉树的遍历互求)

题意:给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到跟的路径上的权和最小。如果有多解,该叶子本身的权应该尽量小。输入中每两行表示一棵树,其中第一行为中序遍历,第二行为后序遍历。【分析】后序遍历的第一个字符就是根,因此只需要在中序遍历中找到它,就知道左右子树的中序和后序遍历了。这样就可以先把二叉树构造出来,然后在执行一次递归遍历,找到最优解。提示...

张松超的博客 381

《全连接到卷积神经网络:图像识别的演变历程》

这篇文章会从传统全连接层面临的困境说起,揭示卷积神经网络(CNN)成为图像识别核心动力的原因,探究其背后蕴含的设计思想与技术创新。但是回顾历史,CNN的出现提醒我们:技术的突破往往是由对自然规律的模仿和重新构建得来的。也许,当机器真的学会“像人一样看世界”的时候,它们的“眼睛”早就超过生物视觉的限制了。例如,用5×5的核处理224×224的输入时,只要25个参数(而不是全连接那种百万级的)。* 局部性:网络的底层只需留意局部的地方(像边缘、纹理这样的地方),不用管那些全局像素之间复杂的关系。

2401_82434295的博客 674

Spring Cloud Gateway 结合OAuth2提供UAA服务

微服务做用户认证和授权一直都是一个难点,随着OAuth2.0的密码模式被作废,更是难上加难了。今天胖哥群里的一个群友搭建用户认证授权体系的时候遇到了一些棘手的问题,这让胖哥觉得是时候分享一些思路出来了。 两种思路 通常微服务的认证和授权思路有两种: 所有的认证授权都由一个独立的用户认证授权服务器负责,它只负责发放Token,然后网关只负责转发请求到各个微服务模块,由微服务各个模块自行对Token进行校验处理。 另一种是网关不但承担了流量转发作用,还承担认证授权流程,当前请求的认证信息由网关中继给下游

duan18888的博客 648

Tree UVA - 548

#include &lt;iostream&gt; #include &lt;bits/stdc++.h&gt; #define maxn 10000+10 using namespace std; int in_order[maxn],post_order[maxn],lch[maxn],rch[maxn]; int n; bool read_line(int* a) { strin...

剑似生平 172

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?此外,用户还可以选择将接收到的图片、视频和文件保存到指定的文件夹中。‌用户可以在微信设置中调整这一设置。

qq_15963745的博客 5088

Tree UVA - 548(中序后序建树)

后续遍历的最后一个数字就是根节点所以用递归把一棵树的子树看成单独的一棵树就能用递归建树了 #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include &lt;algorithm&gt; using namespace std; const...

leekerian的博客 227

SAP Parallel Accounting(平行分类账业务)配置及操作手册(超详细的说明和测试)

非常详细的介绍了SAP 的平行分类账配置以及测试效果哦

nopicture的博客 4345

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

UVA 548 Tree

树,存个代码慢慢想 1 // UVa548 Tree 2 // Rujia Liu 3 // 题意:给一棵点带权(权各不相同,都是正整数)二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权应尽量小 4 // 算法:递归建树,然后DFS。注意,直接递归求结果也可以,但是先建树的方法不仅直观,而且更好调试 5 #include<io...

weixin_34255793的博客 187

Unreal5 从入门到精通之 如何实现 离线语音识别

本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。

TxNet 905

UVA 548-Tree

UVA 548-Tree题目大意:给出一棵树的中序遍历和后序遍历,求出路径上权之和最少的路解题思路:由后序遍历可得到头节点,然后用中序遍历利用递归不断分割,建好树后递归找最小值#include <iostream> #include <sstream> #include <string> using namespace std; const int maxi = 10000 + 100; int m

ZeroLH00的博客 387

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

例题6-8 UVA548 Tree(42行AC代码)

紫书刷题进行中,题解系列【GitHub|优快云】 例题6-8 UVA548 Tree(42行AC代码) 题目大意 给定二叉树的中序和后序遍历序列,求该二叉树中根到叶子的路径和最小者,若存在多个解,则选择叶子权值最小者(叶子权值不重复) 思路分析 关键在于中序和后序建树,后序遍历序列的最后一个元素来确定根(前序的话是第一个元素确定更),中序序列来划分左右子树,如此递归建立树 对于路径和求解,建树完...

努力做个书呆儿 297

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UVa 548 -- Tree

UVa 548 - Tree 给你一棵树的中根序和后根序遍历,求从根到叶子组成的路径中数字和最小的那条。 分析:DFS,树,递归。直接递归求解,用全局变量更新即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<sstream> 4 #include<cstring&gt...

weixin_30528371的博客 109

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

二叉树遍历(前序、中序、后序) UVA 548 Tree

今天复习前面的内容的时候看到一道题UVA 548 Tree,说的是输入一个二叉树中序和后序的集合,沿着二叉树的一条边走,问叶子为多少的这条路最短。 看到这道题,中序?后序?什么玩意???不知道,百度!查了之后会了,就回来A了这题。 先给一个二叉树 二叉树前序遍历          前序遍历顺序可以简记为根左右    规则:    (1)访问根节点    (2)前序遍历左子树  ...

祈的博客 278

UVa548 (树 Tree)

1、题目大意 题目链接UVa 548 给出一棵带权二叉树的中序遍历和后序遍历,求出根到叶子的路径上权和最小的叶子,如果有多解,该叶子本身的权应尽量小。 2、解题思路 根据中序遍历序列和后序遍历序列递归建树。 递归遍历每一个叶子结点,求出权和最小的叶子。 3、参考代码 #include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;...

Armstrong的博客 491

UVA.548 Tree(二叉树 DFS)

UVA.548 Tree(二叉树 DFS)题意分析给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小。若有多个,输出叶子节点本身权值小的那个节点。 先递归建树,然后DFS求解。代码总览#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <strin

Pengwill's Blog 370

uva 548 tree

uva 548 tree You are to determine the value of the leaf node in a given binary tree that is the terminal node of a path of least value from the root of the binary tree to any leaf. The value of a p

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 616

uva 548 - Tree

// uva 548 - Tree // 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=104&page=show_problem&problem=489 // 题目大意: 求从根节点到叶节点路径和最小的叶节点,如果有多组,输出叶节点最小的 #include #include

yzx930420的专栏 343

UVA - 548 - Tree (中序+后序建树+DFS)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=489 548 - Tree Time limit: 3.000 seconds Problem: You are to determine the value of...

weixin_30456039的博客 140

我用Java学算法——UVa548-Tree

一. 题目描述 https://vjudge.net/problem/UVA-548 二. 解题思路 根据树的中序遍历,后序遍历构建出完整的树。后序遍历使得根节点在最后一个字符,得到根节点后,到中序遍历中找到并将树分为左右子树,再递归调用,构建出完整的树。 再用DFS对树进行遍历,找出叶子节点距根节点的权重之和最小的那个叶子节点,保存最后输出该结点的权重。 注意:in.hasNextLine()...

TOCreation 221

uva548 -- Tree

由于uva实在上不去,我就不贴题目了,题目链接。 这一题输入二叉树的中序序列和后序序列,让求一个叶子结点使此叶子节点到根节点路径的权值和最小。这题主要有以下几个问题:1、输入方式;2、根据中序和后序序列建立二叉树;3、使用DFS求权值和最小的叶子结点。我是看了刘汝佳的《算法竞赛入门经典》后才做的这题的,所以代码大体上和刘的相同,输入也是采用stringstream,只是在书中刘是采用数组的方式实

BestFSQ的博客 953

UVa 548 Tree

/* coder: ACboy date: 2010-3-9 result: 1A description: UVa 548 Tree*/#include #include #include #include #include using namespace std;struct tree { // 左右子树 struct tree

个人独立博客http://www.acb0y.cn/ 1118
上一篇: Not so Mobile[ UVA - 839]
下一篇: The Falling Leaves 【UVA - 699 】
Daisy's一乐景三
博客等级 码龄8年 2粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值