BUPT复试专题—树查找(2011)
2024-09-30 06:27:15
https://www.nowcoder.com/practice/9a10d5e7d99c45e2a462644d46c428e4?tpId=67&tqId=29641&rp=0&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking
题目描述
有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。
输入描述:
输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。
输出描述:
输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。
示例1
输入
4
1 2 3 4
2
输出
2 3 完全二叉树如果不是最后一层则该层节点数目固定可以先打表,最后一层单独算即可
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
int num,exl[];exl[]=;
for(int i=;i<=;i++)
exl[i]=exl[i-]*;
while(scanf("%d",&num)!=EOF)
{
int donser[],deep;
for(int i=;i<=num;i++)
scanf("%d",&donser[i]);
scanf("%d",&deep);
int temp=,sum=;
while(temp!=deep)
{
num-=exl[temp];
sum+=exl[temp];
temp++;
if(num<)
{
num=;
break;
}
//cout<<"num:"<<num<<" sum:"<<sum<<" temp:"<<temp<<" exl:temp:"<<exl[temp]<<endl;
}
if(num==)
{
cout<<"EMPTY"<<endl;
continue;
}
if(num>=exl[temp])
{
for(int i=sum+;i<=sum+exl[temp];i++)
{
cout<<donser[i];
if(i!=sum+exl[temp])
cout<<" ";
} }
else
{
for(int i=sum+;i<=sum+num;i++)
{
cout<<donser[i];
if(i!=sum+num)
cout<<" ";
}
}
cout<<endl;
}
return ;
}
最新文章
- Java文件中出现这样的提示错误与解决方法:Cannot return from outside a function or method?
- excel 2010 学习笔记一 Vlookup 函数的使用
- python model对象转为dict数据
- Pycharm使用问题# 内部Terminal
- http协议读书笔记2-连接管理
- 编写并发程序 Inversion
- XHTML1.0对HTML4.0的改进
- OC语法1——OC概述
- destoon框架二次开发【整理】
- hive权威指南<;一>;
- 后端分布式系列:分布式存储-HDFS 与 GFS 的设计差异
- IDEA创建applicationContext.xml 无法自动提示,文件图标是文本类型
- python简单爬虫 用beautifulsoup爬取百度百科词条
- 《python语言程序设计》_第4章_选择
- Java 对远程文件的操作
- 【bzoj 4756】[Usaco2017 Jan] Promotion Counting
- lojround6
- 多线程工具之CompletionService
- 3.Liunx网络管理命令
- BFC特性 形成BFC