题目描述
有一棵n个结点的完全二叉树,按照从上到下、从左到右的顺序,结点编号分别是1~n,该二叉树的根所在的层数为1,请问该二叉树的第k层有哪些结点,按照从左到右的顺序输出这些结点的编号?(如果第k层没有结点,请输出EMPTY)
输入
每行输入2个整数n和k(1<=n<=1000),n代表完全二叉树的结点数量,再输入一个k代表深度(1<=k<=20)。
输出
输出该树中第k层得所有结点,结点间用空格隔开。
如果第k层没有结点,请输出EMPTY。
样例输入
7 2
样例输出
2 3
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
scanf("%d%d",&n,&k);
if(n>=int(pow(2,k)-1))
for(int i=pow(2,k-1);i<=int(pow(2,k)-1);i++)
printf("%d ",i);
else{
if(int(n/2)+1>=pow(2,k-1))
for(int i=pow(2,k-1);i<=n;i++)
printf("%d ",i);
else
printf("EMPTY");
}
return 0;
}