BUPT复试专题—树查找(2011)
https://www.nowcoder.com/practice/9a10d5e7d99c45e2a462644d46c428e4?tpId=67&tqId=29641&rp=0&ru=/kaoyan/retest/1005&qru=/ta/bupt-kaoyan/question-ranking
题目描述
有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。
输入描述:
输入有多组数据。
每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。
输出描述:
输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。
示例1
输入
4
1 2 3 4
2
输出
2 3
完全二叉树如果不是最后一层则该层节点数目固定可以先打表,最后一层单独算即可
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<string.h> using namespace std; int main() { int num,exl[10];exl[1]=1; for(int i=2;i<=11;i++) exl[i]=exl[i-1]*2; while(scanf("%d",&num)!=EOF) { int donser[1001],deep; for(int i=1;i<=num;i++) scanf("%d",&donser[i]); scanf("%d",&deep); int temp=1,sum=0; while(temp!=deep) { num-=exl[temp]; sum+=exl[temp]; temp++; if(num<0) { num=0; break; } //cout<<"num:"<<num<<" sum:"<<sum<<" temp:"<<temp<<" exl:temp:"<<exl[temp]<<endl; } if(num==0) { cout<<"EMPTY"<<endl; continue; } if(num>=exl[temp]) { for(int i=sum+1;i<=sum+exl[temp];i++) { cout<<donser[i]; if(i!=sum+exl[temp]) cout<<" "; } } else { for(int i=sum+1;i<=sum+num;i++) { cout<<donser[i]; if(i!=sum+num) cout<<" "; } } cout<<endl; } return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞