本题要求输出树相应层的所有节点,故只需记录所有节点的值,并计算该层所有节点的下标即可。
#include<stdio.h>
#include<math.h>
using namespace std;
int main(){
int n,buf[1001],d;
while(scanf("%d",&n) != EOF){
for(int i=1;i<=n;i++){
scanf("%d",&buf[i]);
}
scanf("%d",&d);
int m;
m=pow(2,d-1); //第d层的第一个节点
if(m>n) printf("EMPTY\n"); //第d层无节点
else{
while(m<n && m<pow(2,d)-1){ //输出第d层第一个至倒数第二个节点
printf("%d ",buf[m]); //节点间用空格隔开
m++;
}
printf("%d\n",buf[m]); //最后一个节点,后面没有空格
}
}
return 0;
}
本文介绍了一个简单的C++程序,用于输出二叉树特定层的所有节点。通过计算该层节点的起始位置并遍历这些节点,程序能够有效输出指定层的节点值。适用于初学者理解和实践二叉树层次遍历的概念。
1083

被折叠的 条评论
为什么被折叠?



