【九度OJ】题目1176:树查找 解题报告
【九度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:树查找 解题报告的更多相关文章
- 九度oj 题目1173:查找
题目描述: 输入数组长度 n 输入数组 a[1...n] 输入查找个数m 输入查找数字b[1...m] 输出 YES or NO 查找有则YES 否则NO . 输入: 输入有多组数据. ...
- 九度oj 题目1177:查找
题目描述: 读入一组字符串(待操作的),再读入一个int n记录记下来有几条命令,总共有2中命令:1.翻转 从下标为i的字符开始到i+len-1之间的字符串倒序:2.替换 命中如果第一位为1,用命 ...
- 【九度OJ】题目1173:查找 解题报告
[九度OJ]题目1173:查找 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1173 题目描述: 输入数组长度 ...
- 【九度OJ】题目1177:查找 解题报告
[九度OJ]题目1177:查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1177 题目描述: 读入一组字符串(待操作的),再读入 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
随机推荐
- 38- Majority Element
Majority Element My Submissions QuestionEditorial Solution Total Accepted: 110538 Total Submissions: ...
- MybatisPlus的CRUD及拓展
创建一个简单的MybatisPlus项目在上一篇博客:MybatisPlus入门程序 一.CRUD 1. select 1.1 查找全部用户 //查 @Test public void select( ...
- C#判断是否有中文
using System.Text.RegularExpressions; Regex reg = new Regex(@"[\u4e00-\u9fa5]"); if (reg.I ...
- A Child's History of England.5
Above all, it was in the Roman time, and by means of Roman ships, that the Christian Religion was fi ...
- 零基础学习java------36---------xml,MyBatis,入门程序,CURD练习(#{}和${}区别,模糊查询,添加本地约束文件) 全局配置文件中常用属性 动态Sql(掌握)
一. xml 1. 文档的声明 2. 文档的约束,规定了当前文件中有的标签(属性),并且规定了标签层级关系 其叫html文档而言,语法要求更严格,标签成对出现(不是的话会报错) 3. 作用:数据格式 ...
- FileReader (三) - 网页拖拽并预显示图片简单实现
以下是一个很贱很简单的一个 在网页上图拽图片并预显示的demo. 我是从https://developer.mozilla.org/en-US/docs/Web/API/FileReader#Stat ...
- jquery总结和注意事项
1.关于页面元素的引用通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom ...
- 【编程思想】【设计模式】【行为模式Behavioral】Specification
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/specification.py #!/usr/bin/e ...
- 渐进式web应用 (PWA)
PWA(渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序. PWA的特点: Discoverable, 内容可以通过搜索引擎发现. Instal ...
- 【Java 基础】Java Map中的Value值如何做到可以为任意类型的值
Occasionally the average developer runs into a situation where he has to map values of arbitrary typ ...