给一棵二叉树,每个结点都有一个水平位置:左子结点在它左边1个单位,右子结点在右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。如图6-7所示,从左到右的3个位置的权和分别为7,11,3。按照递归(先序)
方式输入,用-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 -1
-1
样例输出:
Case 1:
7 11 3

Case 2:
9 7 21 15

分析:将树存在一个水平一维数组中(以数组中间为根节点,向两边建树),就可以将统一竖线上的节点相加。

AC代码如下:

#include <bits/stdc++.h>
using namespace std;
#define fast                                ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll                                  long long
#define _for(i,a,b)                         for(int i = a;i < b;i++)
#define rep(i,a,b)                          for(int i = a;i <= b;i++)
#define all(s)                              s.begin(), s.end()int b_tree[200];
int L, R;
int n,kase = 0;void build(int dot,int pos)
{int l, r;//左结点,右结点b_tree[pos] += dot;scanf("%d", &l);if (l != -1) { L = (L < pos - 1) ? L : pos - 1; build(l, pos - 1);}//左子树scanf("%d", &r);if (r != -1) {R = (R > pos + 1) ? R : pos + 1;build(r, pos + 1); }//右子树
}int main()
{while (scanf("%d",&n) == 1 && n != -1)//存入根结点{memset(b_tree, 0, sizeof(b_tree));L = R = 100;//记录build(n, 100);//输出printf("Case %d:\n", ++kase);rep(i, L, R){if(i!=R)printf("%d ", b_tree[i]);else printf("%d\n\n", b_tree[i]);}}return 0;
}

UVA - 699 The Falling Leaves相关推荐

  1. 699 - The Falling Leaves

    The Falling Leaves PS:因为该题排版较麻烦,这里给出OJ网址:UVa699 - The Falling Leaves 给一棵二叉树,每个结点都有一个水平位置:左子结点在它左边1个单 ...

  2. 【两种解法】he Falling Leaves UVA - 699

    立志用最少的代码做最高效的表达 Each year, fall in the North Central region is accompanied by the brilliant colors o ...

  3. 【POJ No. 1577 / UVA No. 1525】落叶 Falling Leaves

    [POJ No. 1577 / UVA No. 1525]落叶 Falling Leaves POJ题目地址 [题意] 一棵字母二叉树如下图所示. 一棵字母二叉树可以是两者之一: ①空树: ②有一个根 ...

  4. UVA699 下落的树叶 The Falling Leaves(二叉树的递归遍历建树)

    UVA699 下落的树叶 The Falling Leaves bool型的函数一定不能忘了组后要加上return 1;或者return 0;!!!! #include<bits/stdc++. ...

  5. The Falling Leaves UVA - 699

    题目链接:https://vjudge.net/problem/UVA-699 题目大意:给一颗二叉树,每个结点都有一个水平位置 :左子节点在它左边的1个单位,右子结点在它右边1个单位.从左向右输出每 ...

  6. POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历)

    题意:给出一棵字母二叉树删除叶子节点的序列,按删除的顺序排列.让你输出该棵二叉树额前序遍历的序列. 思路:先把一棵树的所有删除的叶子节点序列存储下来,然后从最后一行字符串开始建树即可,最后遍历输出. ...

  7. POJ 1577 Falling Leaves(二叉查找树)

    题目链接:http://poj.org/problem?id=1577 题目大意: 二叉查找树按照叶子节点,从下往上抹去该树,给出抹除字符序列,求该二叉树,并前序打印 解题思路: 最后抹除的是根节点, ...

  8. python构建二叉树_python--使用递归的方式建立二叉树

    树和图的数据结构,就很有意思啦. # coding = utf-8 class BinaryTree: def __init__(self, root_obj): self.key = root_ob ...

  9. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

最新文章

  1. php win memcached 5.4,CentOS 5.4下Memcache的安装步骤(Linux+Nginx+PHP+Memcached) 电脑维修技术网...
  2. 计算机考研数据结构重点
  3. 让小乌龟可以唱歌——对Python turtle进行拓展
  4. SpringBoot连接MQTT服务器时因ClintID重复导致频繁掉线重连
  5. 为Eclipse plug-in(插件)创建语言包
  6. Andy's First Dictionary
  7. python textwrap_python2.7.3编译python模块学习- textwrap 文本包装和填充
  8. Product settype list tool - report PROD_DISPLAY_SETTYPE
  9. zookeeper集群部署监控与选举同步流程等工作原理
  10. 如何在React Native中使用React JS Hooks?
  11. 新闻发布系统,我学会了什么?
  12. 友链导航源码php,2020优化版导航源码自动收录秘趣导航批量检查友链有效性导航源码...
  13. 总结在CentOS7上搭建CUDA10+cudnn7的Tensorflow-gpu环境的经验
  14. 我的世界MC个人服务器搭建(阿里云ECS)
  15. 简单快捷的Amaze UI框架搭建
  16. Windows 98光盘启动安装过程详细图解
  17. 用扩展程序下载油管视频(好用
  18. ZUI易入门Android之客户端适配9.0方案
  19. uniApp调用高德地图时遇到的问题记录
  20. 电脑软件:推荐七款实用的效率神器

热门文章

  1. python在电脑下载-Windows下下载及安装numpy、pandas及简单应用
  2. python基础编程语法-Python基础语法介绍:面向对象编程(上)
  3. python自学视频教程 38-python编程开发入门中文视频培训教程38讲
  4. python必背代码-Python小白必备的8个最常用的内置函数(推荐)
  5. Android基于讯飞语音SDK实现语音识别
  6. mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题
  7. 前端面试知识点归纳:vue,react,webpack,bable,项目开发
  8. 基于HEVC的UHD(超高清4K)视频质量评价
  9. 限制码率的视频编码标准比较(包括MPEG-2,H.263, MPEG-4,以及 H.264)
  10. 伪静态设置php,php伪静态设置