树查询
-
有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。
- 输入:
-
输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。
- 输出:
-
输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。
- 样例输入:
-
4 1 2 3 4 2
- 样例输出:
-
2 3
#include<stdio.h> #include<math.h> int main() { int d,n,i,j,a[1101]; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&a[i]); scanf("%d",&d); if(n<(int)pow(2,d-1)) printf("EMPTY\n"); else { printf("%d",a[(int)pow(2,d-1)]); for(i=(int)pow(2,d-1)+1;i<=(int)pow(2,d)-1&&i<=n;i++) printf(" %d",a[i]); printf("\n"); } }//while return 0; }
二叉树复习下:
非空二叉树上第k层上至多有pow(2,k-1)
高度为H的二叉树至多有pow(2,H)-1个节点。
具有N个结点的完全二叉树的高度为log2(N+1)或【log2N】+1;