KY194 樹查找
題目描述
有一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出EMPTY。該樹是完全二叉樹。
輸入描述:
輸入有多組數據。
每組輸入一個n(1<=n<=1000),然後將樹中的這n個節點依次輸入,再輸入一個d代表深度。
輸出描述:
輸出該樹中第d層得所有節點,節點間用空格隔開,最後一個節點後沒有空格。
示例1
輸入
4
1 2 3 4
2
輸出
2 3
題解:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
//利用數組存儲完全二叉樹
int a[1024];
memset(a, 0, sizeof(a));
int t, d;
cin>>t;
for(int i=1; i<=t; i++){
int x;
cin>>x;
a[i] = x;
}
cin>>d;
//第d層起始節點
int start = (int)pow(2, d-1);
//end:第d層結尾節點+1
int end = min((int)pow(2, d), t);
if(end - start < 0){
cout<<"EMPTY"<<endl;
}else{
int i = start;
for(; i< end - 1; i++){
cout<<a[i] <<" ";
}
cout<<a[i]<<endl;
}
return 0;
}