题目1176:树查找

来源:互联网 发布:centos下载apache教程 编辑:程序博客网 时间:2024/06/03 08:17

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:8578

解决:3550

题目描述:

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

输入:

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

输出:

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

样例输入:
41 2 3 42
样例输出:
2 3
来源:
2010年北京邮电大学网院研究生机试真题
根据完全二叉树的性质
第k层结点位置在2^(k-1)~2^k-1之间,不难写出代码
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main() {int n;int a[1005];while(~scanf("%d",&n)) {for(int i=1; i<=n; i++) {scanf("%d",&a[i]);}int k;scanf("%d",&k);int start=pow(2,k-1);int end=pow(2,k)-1;if(n>=end){for(int i=start;i<end;i++){printf("%d ",a[i]);}printf("%d\n",a[end]);}else if(n>=start&&n<end){for(int i=start;i<n;i++){printf("%d ",a[i]);}printf("%d\n",a[n]);}else {printf("EMPTY\n");}}return 0;}