【九度OJ】题目1176:树查找 解题报告

标签(空格分隔): 九度OJ


http://ac.jobdu.com/problem.php?pid=1176

题目描述:

有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。

输入:

输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。

输出:

输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。

样例输入:

4
1 2 3 4
2

样例输出:

2 3

Ways

二叉树的性质。

首先考虑,这是要输出某一层的所有元素,那么这一层是否存在?再其次,这一层是完全的吗,是否有空的节点。

我们知道,每一层的叶子节点的最左边的元素是2^(deep -1),最右节点元素是2^deep-1,所以我可以根据这个判断deep和总数n之间的关系。

只要所求deep层的pow(2, deep - 1) <= n,那么此层必不为空。然后遍历该层,如果当前节点的下一个节点是0,说明下一个节点已经不存在了,那么,应该输出当前值,不空格,要换行;否则说明右边还有元素,再判断是否是最后元素,即是否满足i == pow(2, deep) - 1,同理判断是否留空格和换行。

因为二叉树的叶子记数是从1开始的,所以我在往数组里插入数字,以及读出的时候也是从1开始,不符合平时的数组习惯,注意不要出现问题。

#include <stdio.h>
#include <math.h> int main() { int n;
int tree[1002];
int deep; while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; i++) {
scanf("%d", &tree[i]);
}
scanf("%d", &deep);
if (pow(2, deep - 1) <= n) {
for (int i = (int) pow(2, deep - 1);
i < pow(2, deep); i++) {
if (tree[i + 1] == 0) {
printf("%d\n", tree[i]);
break;
} else {
if (i == pow(2, deep) - 1)
printf("%d\n", tree[i]);
else
printf("%d ", tree[i]);
}
}
} else {
printf("EMPTY\n");
} }
return 0;
}

二刷这个题的时候,思路更加清晰了:计算出这一层的左右节点的“序号”,判断与n的关系即可。注意题目中的数的节点里面放的数据不一定是连续的,否则也就没有输入的意义了。

注意i是逻辑上的序号,tree[i]是具体的节点放的内容。

#include<stdio.h>
#include<math.h> int main() {
int n, d;
int tree[1002];
while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; i++) {
scanf("%d", &tree[i]);
}
scanf("%d", &d);
int left = (int) pow(2, d - 1);
int right = (int) pow(2, d) - 1;
if (left > tree[n]) {
printf("EMPTY\n");
}
bool isFirst = true;
for (int i = left; i <= n && i <= right; i++) {
if (isFirst) {
printf("%d", tree[i]);
isFirst = false;
} else {
printf(" %d", tree[i]);
} }
printf("\n");
} return 0;
}

Date

2017 年 3 月 4 日

【九度OJ】题目1176:树查找 解题报告的更多相关文章

  1. 九度oj 题目1173:查找

    题目描述: 输入数组长度 n 输入数组      a[1...n] 输入查找个数m 输入查找数字b[1...m]  输出 YES or NO  查找有则YES 否则NO . 输入: 输入有多组数据. ...

  2. 九度oj 题目1177:查找

    题目描述: 读入一组字符串(待操作的),再读入一个int n记录记下来有几条命令,总共有2中命令:1.翻转  从下标为i的字符开始到i+len-1之间的字符串倒序:2.替换  命中如果第一位为1,用命 ...

  3. 【九度OJ】题目1173:查找 解题报告

    [九度OJ]题目1173:查找 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1173 题目描述: 输入数组长度 ...

  4. 【九度OJ】题目1177:查找 解题报告

    [九度OJ]题目1177:查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1177 题目描述: 读入一组字符串(待操作的),再读入 ...

  5. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  6. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  8. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  9. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

随机推荐

  1. MAC下如何连接安卓(小米)手机进行互传文件?

    命令行: brew cask install android-file-transfer AndroidFileTransfer, 在andorid设备和您的mac电脑之间浏览和传输文件: 不论通过什 ...

  2. perl 获取目录信息

    1 #!/usr/bin/perl -w 2 use strict; 3 use FindBin qw($Bin $Script); 4 5 my $rp=$Bin; 6 print "th ...

  3. 搭建zabbix服务器常见问题解析处理

    1. 找不到url 2. 服务器无法处理当前请求,PHP解析出错 3. 服务器无法处理当前请求,权限不足 1. 找不到url 浏览器报错:The requested URL /zabbix/ was ...

  4. day07 MySQL索引事务

    day07 MySQL索引事务 昨日内容回顾 pymysql模块 # 链接数据库都是使用这个模块的 # 创建链接 import pymysql conn = pymysql.connect( host ...

  5. Scala(五)【集合的高级使用】

    目录 一.集合属性 size length contains mkString 二.集合方法 drop.dropRight distinct:去重 head.last:获取第一个.最后一个元素 tai ...

  6. 单链表的模板类(C++)

    /*header.h*/#pragma once #include<iostream> using namespace std; template<class T> struc ...

  7. 【SpringBoot】几种定时任务的实现方式

    SpringBoot 几种定时任务的实现方式 Wan QingHua 架构之路  定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java ...

  8. .net 5 开发部署B/S程序。

    现在.net 6 已经出来了,visualStudio 2022也发行预览版了. 自 .net5 发布,.net core 与.net framework 已经走向统一.确实越来越好用了. 现在.ne ...

  9. C# 获取当前目录的父级目录

    Directory.GetParent(System.Environment.CurrentDirectory).FullName

  10. Unity——WegGL打包问题

    Rendering设置 Gamma和Linear颜色空间,两者有色差,Gamma有个2.25左右的修正值: WebGL2.0可用的情况,只支持Deferred Render延迟渲染,且只支持Linea ...