zcmu-4932: 樹查詢
阿新 • • 發佈:2018-11-24
4932: 樹查詢
Time Limit: 1 Sec Memory Limit: 32 MB
Submit: 26 Solved: 16
[Submit][Status][Web Board]Description
有一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出EMPTY。該樹是完全二叉樹。
Input
輸入有多組資料。
每組輸入一個n(1<=n<=1000),然後將樹中的這n個節點依次輸入,再輸入一個d代表深度。
Output
輸出該樹中第d層得所有節點,節點間用空格隔開,最後一個節點後沒有空格。
Sample Input
5 1 2 3 4 5 7 7 1 2 3 4 5 6 7 2 0
Sample Output
EMPTY 2 3
HINT
Source
做下水題還是很快樂的~
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cstdlib> #include <map> #include <list> #include <vector> #include <stack> #include <queue> #include <algorithm> #include <iostream> #define go(i,a,b) for(int i=a;i<=b;i++) #define og(i,a,b) for(int i=a;i>=b;i--) #define mem(a) memset(a,0,sizeof(a)) #define cs cout<<"-----"<<endl; using namespace std; const int inf=0x3f3f3f3f; const int maxn = 2e3 + 5; typedef long long ll; int a[maxn]; int main() { int n,d; while(scanf("%d",&n) && n) { go(i,1,n) cin>>a[i]; cin>>d; int s = pow(2,d-1);//第d層第一個節點編號 int c = s;//第d層共有幾個節點 if(s+c-1 > n) cout<<"EMPTY"<<endl; else { go(i,s,s+c-1) { if(i == s) printf("%d",a[i]); else printf(" %d",a[i]); } cout<<endl; } } return 0; }