P2171 Hz吐泡泡 题解
题目背景
Hz大大是一种可爱的动物(神)。他很喜欢吐泡泡(更喜欢写作业)。
题目描述
这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡)。因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树)。输出它的后序遍历。
输入格式
共2行。
第一行,1个整数n。(1<=n<=300000)
第二行,n个数,代表泡泡的大小。
输出格式
共2行。
第一行,输出树的深度。
第二行,输出数的后序遍历。
详见样例输出。
输入输出样例
输入 #1复制
8
1 4 3 9 10 35 2 7
输出 #1复制
deep=5
2
3
7
35
10
9
4
1
说明/提示
水题一道。
题意分析
本题就是一般的二叉搜索树的建立,及二叉树的后序遍历,及求树的深度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include<iostream> using namespace std; const int maxn=300009; int n,idx,rt,dep,maxdep=1; int t[maxn]; int ch[maxn][2]; void insert( int &x, int val) { if (!x) { x=++idx; t[x]=val; return ; } else { dep++; if (val<t[x]) insert(ch[x][0],val); else insert(ch[x][1],val); } } void order( int x) { if (!x) return ; order(ch[x][0]); order(ch[x][1]); cout<<t[x]<< "\n" ; } int main() { int n; cin>>n; for ( int i=1;i<=n;i++) { int x; cin>>x; dep=1; insert(rt,x); maxdep=max(maxdep,dep); } cout<< "deep=" <<maxdep<<endl; order(rt); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库