UVa 699 - The Falling Leaves

UVA699 下落的树叶 The Falling Leaves(二叉树的递归遍历建树) UVA699 下落的树叶 The Falling Leaves bool型的函数一定不能忘了组后要加上return 1;或者return 0;!!!! #include<bits/stdc++.h> using namespace std; #define debug(x) cout<<"# "<<x<<" "<<endl; type... 阅读详情

实质上是一个二叉树的DFS,先左子树,再右子树,因为题目说最大宽度为80,所以开一个80的数组,从中间(40)开始,往里递归。

以第二组数据为例,

8 2 9 -1 -1 6 5 -1 -1 12 -1-1 3 7 -1 -1 -1

开始a[40]=8,其左子树 2 (a[39]=2),右子树 3 (a[41]=3);

2的左子树为 9 (a[38]=9),右子树为6,则其右子树的值应该加到a[40]上,即:a[40]+=6,此时a[40]=14;

而9的左右子树都为-1,不作处理,然后对2的右子树6进行处理,其左子树为 5 (a[39]+=5,则a[39]为7),其右子树为 12 (a[41]+=12则,a[41]为15);

而根的右子树 3 (a[41]=3),其左子树为7(a[40]+=7,此时[40]=21),右子树为-1(舍去)。

所以,其左界为38,右界为41,依次输出 a[38]=9,a[39]=7,a[40]=21,a[41]=15。

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<string>
using namespace std;
int a[80+2],Left,Right;
void Tree_DFS(int l,int r)
{
    int ll,rr;
    scanf("%d",&ll);
    if(ll!=-1)
    {
        a[l]+=ll;
        if(l<Left)
            Left=l;   //记录左边界
        Tree_DFS(l-1,l+1);
    }
    scanf("%d",&rr);
    if(rr!=-1)
    {
        a[r]+=rr;
        if(r>Right)
            Right=r;   //记录右边界
        Tree_DFS(r-1,r+1);
    }
    if(ll==-1||rr==-1)
        return ;
}
int main()
{
#ifdef test
    freopen("sample.txt","r",stdin);
#endif
    int num=1;
    while(1)
    {
        memset(a,0,sizeof(a));
        scanf("%d",&a[40]);
        if(a[40]==-1)
            break;
        Left=Right=40;
        Tree_DFS(39,41);
        printf("Case %d:\n",num++);
        printf("%d",a[Left]);
        for(int i=Left+1; i<=Right; i++)
            printf(" %d",a[i]);
        printf("\n\n");
    }
    return 0;
}


【代码超详解】UVA 699 The Falling Leaves 下落的树叶 一、题目描述 有些地方原题说得不太清楚,我按照自己的语言说一遍。 输入是若干棵二叉树,先序遍历,权值代表从该点竖直落下的叶片数量,没有风将任何节点落下的叶片吹到其它地方去。每个节点的左子树比该节点的水平坐标减少一个单位,右子树比该节点的水平坐标增加一个单位,两个子树的垂直坐标比父节点减少一个单位。要求统计处在每个水平位置全部节点的权值之和(作为该处落下的叶片的总数)。如果一个节点的左子树或右子树不... 阅读详情

相关推荐

海康VM加密狗无法识别常见问题排查

海康VM加密狗无法识别常见问题排查

视觉人机器视觉的博客 2717

【UVA 699 --- The Falling Leaves】二叉树

【UVA 699 --- The Falling Leaves】二叉树 Description Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves ac...

来日浅谈的博客 449

Veritas NetBackup 10.1 Windows安装指南:从账户配置到完整部署

本文详细介绍了Veritas NetBackup 10.1在Windows系统上的完整安装流程,从账户配置到部署验证。重点讲解了创建专用服务账户、安装组件选择、许可证输入等关键步骤,并提供了常见问题排查和进阶配置建议,帮助用户顺利完成企业级备份解决方案的部署。

weixin_26765287的博客 454

UVa699 The Falling Leaves

// UVa699 The Falling Leaves // Rujia Liu // 题意:给一棵二叉树,每个节点都有一个水平位置:左儿子在它左边1个单位,右儿子在右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。按照递归方式输入,-1表示空树 // 算法:在“建树”的同时计算,无须真正的把树保存下来 #include #include using namespace std;

zhouzhijian97的博客 304

Linear超高PSRR线性稳压器-典型应用电路解析

本文整理完了LT3045数据手册内所有的典型应用电路,试图让沉默的电路开口,简单介绍了他们这样做的目的和原理,从中我们可以更加熟悉这颗经典芯片的应用。但也有一些电路并没有搞懂,遗留下了不少问题。

硬件工程师笔记 2942

Altium Designer 16安装教程(Windows11、小白教程)

Altium Designer 16在Windows11中的超详细安装教程

qq_47003770的博客 1万+

UVa699-The Falling Leaves(下落的叶子)

UVa 699 - The Falling Leaves(下落的叶子) 给一棵二叉树,每个节点都有一个水平位置:左子节点在它左边1个单位,右子节点在右边一个单位。从左向右输出每个水平位置的所有节点的权值之和。按照递归(先序)方式输入,用-1表示空树。 样例输入: 5 7 -1 6 -1 -1 3 -1 -1 8 2 9 -1 -1 6 5 -1 -1 12 -1 -1 3 7 -1 -1

Never Settle ! 332

ADAS工作原理解析:如何通过智能技术提升驾驶安全

ADAS通过集成传感器、摄像头、雷达、SoC计算单元以及高效的数据融合技术,提供了一系列主动和被动安全功能,如自动刹车、车道保持、自适应巡航控制等。这些功能共同作用,不仅减少了交通事故的发生,还大幅提升了驾驶员的驾驶体验和安全性。随着技术的进步,ADAS的功能将越来越智能,最终迈向全自动驾驶的未来🚗💨。

weixin_43199439的博客 1149

uva 699 - The Falling Leaves

// uva 699 - The Falling Leaves // 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=104&page=show_problem&problem=640 // 题目大意:给出一棵二叉树先序遍历的结果,-1表示节点为空,每个节点垂直往下落叶,落叶的数量

yzx930420的专栏 360

Ubuntu22.04如何安装cuDNN8.9.7

本文详细介绍了在Ubuntu 22.04系统上为CUDA 12.2安装适配cuDNN 8.9.7的完整流程,特别针对RTX A6000显卡。主要内容包括:1)选择与CUDA 12.2兼容的cuDNN版本;2)使用deb包方式的安装步骤(添加仓库、导入密钥、安装组件);3)通过MNIST示例验证安装;4)版本锁定、卸载旧版等补充说明;5)性能测试方法。文中强调了版本匹配的重要性,并提供了多卡配置建议,为搭建深度学习开发环境提供完整指导。

2501_93651177的博客 1845

与OpenClaw同类性质的AI智能体框架/工具汇总(小白友好)

OpenClaw的核心定位是「开源、本地优先、可执行真实任务的AI代理」,核心价值是让AI从“聊天”落地到“动手干活”(操控电脑/服务器、处理办公/系统任务)。结合这一核心,以下是同类性质的工具/框架,按「小白易上手程度」排序,每个产品重点说明和OpenClaw的异同、核心优势及适配场景,方便小白快速区分选择。

hy行者勇哥的博客 2107

UVA 699 The Falling Leaves

https://vjudge.net/problem/UVA-699 题目 水得不行,就不说了…… 题解 水题,只是注意数组不能开太大……直接就TLE了(缩小10倍用了0.9秒,服了……) AC代码(其实没有看的必要) #include<bits/stdc++.h> using namespace std; #define MAXN 1000007 ...

159

玩转Docker小游戏项目系列:Docker部署魔塔网页经典小游戏

玩转Docker小游戏项目系列:Docker部署魔塔网页经典小游戏

jks212454的博客 1063

uva 699 The Falling Leaves

uva 699 题目链接 题目大意:给一棵二叉树(先序),求每一列的和,从左到右输出 5,6是重合的与1是一列 解题思路:从数轴中间开始左孩子往左移,右孩子往右移,将值加进去 结果就是答案 注意问题:值为-1,则表示为空,                   树为空输入结束                   数据按先序读入            

375

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

uva 699 The Falling Leaves (二叉树)

uva 699 The Falling Leaves Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating und

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

下落的树叶 The Falling Leaves UVa 699

下落的树叶 The Falling Leaves 题述 给一棵二叉树,每个结点都有一个水平位置:左子结点在它的左边一个单位,右子结点在它的右边一个单位。从左向右输出每个水平位置的所有结点的权值之和。如图所示,从左到右的三个位置的权和分别为7,11,3。按照递归(先序)方式输入,用-1表示空树。 样例输入 5 7 -1 6 -1 -1 3 -1 -1 8 2 9 -1 -1 6 5 -1 -1 12...

qq_43749262的博客 422

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

The Falling Leaves 【UVA - 699 】

Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the same thing ha...

Meant_To_Be的博客 224

UVA699 The Falling Leaves 解题报告

先序递归隐式建树,同时统计每一列的和。我们并不需要真的建树,在递归的过程中我们无需知道每个节点的具体编号,只需要知道当前节点列编号即可,为了方便实现,我们将整棵树的根节点视为0列,往左为-1列,往右为+1列,这样做列数会有负数,所以使用map来维护每一列的和。给一棵二叉树,每个结点都有一个水平位置:左子结点在它左边1个单位,右子结点在右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。如图6-7所示,从左到右的3个位置的权和分别为7,11,3。按照递归(先序)方式输入,用-1表示空树。

qq_45554473的博客 449

uva-699 The Falling Leaves

Each year, fall in the North Central region is accompanied by the brilliant colors of the leaves on the trees, followed quickly by the falling leaves accumulating under the trees. If the same thing ha

超 1705

UVa 699 下落的树叶 (The Falling Leaves)

给一颗二叉树,每个节点都有一个水平位置:左子节点在它左边1个单位,右子节点在右边一个单位,从左向右输出每个水平位置的所有节点的权值之和。按照递归方式输入,-1表示空树。 要点: 递归方式输入,用递归方式求解,题目额外说明输出的个数不会超过80个,换句话说,只要开 80 * 2 + 1= 161的数组将树的中心放在中间就不会越界,为了方便,将数组开大一点,当然也可以在递归过程中查看最左的pos和...

Inuyasha__的博客 306

UVA699-例题6-10 下落的树叶(The Falling Leaves,UVa 699)

原题链接: UVa-699 题目大意:   题意为给一棵二叉树,求从左向右输出每个水平位置的所有结点的权值之和。输入按照递归(先序)方式,-1表示空树。 解题思路:  本题是《算法竞赛入门经典》第六章例题,本题的主要解题思路就是使用递归根据输入直接计算每个水平位置的的权值之和。  一开始看完题之后也想着用数组来存储每一列的权值之和。但是由于下标的问题感觉处理起来过于麻烦。就有

Miracle42的博客 1505

The Falling Leaves UVA - 699

UVA-699思路:由于是通过递归的方式输入,于是编写一个递归过程进行输入比较好。(思路,题目图片取自紫书)#include&lt;cstdio&gt; #include&lt;cmath&gt; #include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;cstdlib&gt; #include&lt;algorithm&gt; #i...

啥也不会呀 219
上一篇: UVa 784 - Maze Exploration
下一篇: UVa 327 - Evaluating Simple C Expressions
GooMaple
博客等级 码龄14年 79粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值