codeVS 3110 二叉查找树做法

题目描述 Description

给定N(N≤500,000)和N个整数(较有序),将其排序后输出。

输入描述 Input Description

N和N个整数

输出描述 Output Description

N个整数(升序)

样例输入 Sample Input

5

12 11 10 8 9

样例输出 Sample Output

8 9 10 11 12

数据范围及提示 Data Size & Hint

对于33%的数据 N≤10000

对于另外33%的数据 N≤100,000  0≤每个数≤1000

对于100%的数据 N≤500,000  0≤每个数≤2*10^9

没错,很水的一道题,其实用sort就可以过了,数据水。。。但我还是想装一逼

 1 #include<iostream>
 2 using namespace std;
 3 typedef struct Node{
 4     int data;
 5     Node *lchild,*rchild;
 6 }Node,*Tree;
 7 Tree bst=NULL;
 8 int n,a[500001];
 9 void Init_tree(Tree &bst,int k){
10     if(!bst){
11         bst=new Node;
12         bst->data=k;
13         bst->lchild=bst->rchild=NULL;
14     }
15     else{
16         if(k>bst->data)    Init_tree(bst->rchild,k);
17         else    Init_tree(bst->lchild,k);
18     }
19 }
20 void z_sort(Tree &bst){
21     if(bst){
22         z_sort(bst->lchild);
23         cout<<bst->data<<" ";
24         z_sort(bst->rchild);
25     }
26 }
27 int main(){
28     bst=NULL;
29     cin>>n;
30     for(int i=1;i<=n;++i){
31         cin>>a[i];
32         int k=a[i];
33         Init_tree(bst,k);
34     }
35     z_sort(bst);
36     return 0;
37 }
时间: 2024-12-24 06:18:45

codeVS 3110 二叉查找树做法的相关文章

codevs 3110 二叉堆练习3

3110 二叉堆练习3 http://codevs.cn/problem/3110/ 题目描述 Description 给定N(N≤500,000)和N个整数(较有序),将其排序后输出. 输入描述 Input Description N和N个整数 输出描述 Output Description N个整数(升序) 样例输入 Sample Input 5 12 11 10 8 9 样例输出 Sample Output 8 9 10 11 12 数据范围及提示 Data Size & Hint 对于3

AC日记——二叉堆练习3 codevs 3110

3110 二叉堆练习3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定N(N≤500,000)和N个整数(较有序),将其排序后输出. 输入描述 Input Description N和N个整数 输出描述 Output Description N个整数(升序) 样例输入 Sample Input 5 12 11 10 8 9 样例输出 Sample Output 8 9 10 11 12 数据范围及提示 Data Si

【基础练习】【线性DP+离散化】codevs1105 过河题解

题目描述 Description 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,--,L(其中L是桥的长度).坐标为0的点表示桥的起点,坐标为L的点表示桥的终点.青蛙从桥的起点开始,不停的向终点方向跳跃.一次跳跃的距离是S到T之间的任意正整数(包括S,T).当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥. 题目给出独木桥

codevs 2924 数独挑战 x(三种做法+超详细注释~)

2924 数独挑战 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题目描述 Description “芬兰数学家因卡拉,花费3个月时间设计出了世界上迄今难度最大的数独游戏,而且它只有一个答案.因卡拉说只有思考能力最快.头脑最聪明的人才能破解这个游戏.”这是英国<每日邮报>2012年6月30日的一篇报道.这个号称“世界最难数独”的“超级游戏”,却被扬州一位69岁的农民花三天时间解了出来. 看到这个新闻后,我激动不已,证明我们OI的实力的机会来了,我们虽然不是

图解数据结构(7)——二叉查找树及平衡二叉查找树(一共14篇)

这篇将是最有难度和挑战性的一篇,做好心理准备!十.二叉查找树(BST)前一篇介绍了树,却未介绍树有什么用.但就算我不说,你也能想得到,看我们Windows的目录结构,其实就是树形的,一个典型的分类应用.当然除了分类,树还有别的作用,我们可以利用树建立一个非常便于查找取值又非常便于插入删除的数据结构,这就是马上要提到的二叉查找树(Binary Search Tree),这种二叉树有个特点:对任意节点而言,左子(当然了,存在的话)的值总是小于本身,而右子(存在的话)的值总是大于本身. 这种特性使得我

二分法 codevs 1432 总数统计

codevs 1432 总数统计 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给出n个数,统计两两之和小于k的方案数之和. 输入描述 Input Description 第一行一个数n,表示数字的个数:第二行到第n + 1行,每行一个不超过2,000,000,000的数k:第n + 2行一个数m,表示m个问题:第n + 3行到第n + m + 2行,每行一个数m,询问表示n中两两组合不超过m的组合的个数: 输出描述 O

bzoj 3110

整体二分. 首先,第k大问题是满足二分性的(只要我们能够快速求出集合中比某个数小的数的个数,那么就可以快速找出该集合的第K大). 然后考虑整体二分,关键是我们怎么将询问分到其对应的答案子区间中. 和普通的区间第K大的做法一样,我们先将修改按照大小排序(普通的区间第K大就是给出的原序列,而这里就是区间修改). 设对于答案区间[lf,rg],有询问集合q,求出当前区间的mid,然后二分外面的修改数组,找出大小在[lf,mid]中的所有修改,将它们提出来,按照修改的顺序排序,然后和询问一起沿时间轴扫过

BZOJ 3110: [Zjoi2013]K大数查询 [树套树]

3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 6050  Solved: 2007[Submit][Status][Discuss] Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. Input 第一行N,M接下来M行,每行形如1 a

[Codevs 1107][NOIP 1107]等效表达

主题连接:http://codevs.cn/problem/1107/ 一道非常奇妙的题目. 对于算术表达式一类的问题,能够採用编译原理里的后缀表达式的方式来做.详细做法是分别维护两个栈,一个栈里保存表达式里的数字,还有一个栈里保存表达式里的运算符,给每种运算符一个优先级,我们要维护这个栈的单调性,每次读入运算符中的数字或运算符,读入的是运算符时,若这个运算符比栈顶的运算符优先级低,就弹出栈顶元素.把栈顶的运算符和数字栈里栈顶的两个数字拿出来做一次运算,运算结果再入数字栈.直到运算符栈的栈顶元素