PAT 1064 Complete Binary Search Tree
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <algorithm> using namespace std; class Node {
public:
int val;
Node* left;
Node* right;
public:
Node(): val(), left(NULL), right(NULL) {}
Node(int _val, Node* _left = NULL, Node* _right = NULL): val(_val), left(_left), right(_right) {}
}; vector<Node*> build_next_level(vector<Node*> last_level, int &num) {
vector<Node*> res;
if (num < ) return res; for (auto iter = last_level.begin(); iter != last_level.end(); iter++) {
Node* parent = *iter; Node* lchild = new Node();
res.push_back(lchild);
parent->left = lchild;
if (--num < ) break; Node* rchild = new Node();
res.push_back(rchild);
parent->right= rchild;
if (--num < ) break;
} return res;
} void inorder_traverse(Node* root, int& order) {
if (root == NULL) return;
inorder_traverse(root->left, order);
root->val = order++;
inorder_traverse(root->right, order);
} int main() {
int cnt; scanf("%d", &cnt); vector<int> nums(cnt, ); if (cnt < ) return ; for (int i = ; i<cnt; i++) {
int num = ;
scanf("%d", &num);
nums[i] = num;
}
sort(nums.begin(), nums.end()); vector<vector<Node*> > levels; vector<Node*> last_level;
last_level.push_back(new Node()); levels.push_back(last_level); int node_cnt = cnt - ; // we already pushed the root node
while (node_cnt > ) {
vector<Node*> cur_level = build_next_level(last_level, node_cnt);
levels.push_back(cur_level);
swap(last_level, cur_level);
} int order = ;
inorder_traverse(levels[][], order); node_cnt = cnt; for (auto iter_levels = levels.begin(); iter_levels != levels.end(); iter_levels++) {
vector<Node*>& cur_level = *iter_levels;
for (auto iter = cur_level.begin(); iter != cur_level.end(); iter++) {
Node* node = *iter;
int val = nums[node->val];
if (--node_cnt > ) {
printf("%d ", val);
} else {
printf("%d\n", val); // last element
}
}
}
return ;
}
又是跟书本比较近的一题
PAT 1064 Complete Binary Search Tree的更多相关文章
- PAT 1064 Complete Binary Search Tree[二叉树][难]
1064 Complete Binary Search Tree (30)(30 分) A Binary Search Tree (BST) is recursively defined as a b ...
- PAT甲级:1064 Complete Binary Search Tree (30分)
PAT甲级:1064 Complete Binary Search Tree (30分) 题干 A Binary Search Tree (BST) is recursively defined as ...
- PAT题库-1064. Complete Binary Search Tree (30)
1064. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- pat 甲级 1064. Complete Binary Search Tree (30)
1064. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- 1064. Complete Binary Search Tree (30)【二叉树】——PAT (Advanced Level) Practise
题目信息 1064. Complete Binary Search Tree (30) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B A Binary Search Tr ...
- PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)
1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a bin ...
- pat 甲级 1064 ( Complete Binary Search Tree ) (数据结构)
1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binar ...
- PAT 甲级 1064 Complete Binary Search Tree
https://pintia.cn/problem-sets/994805342720868352/problems/994805407749357568 A Binary Search Tree ( ...
- PAT Advanced 1064 Complete Binary Search Tree (30) [⼆叉查找树BST]
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...
随机推荐
- lamp centos下一键安装
系统需求 系统支持:CentOS 6+/Debian 7+/Ubuntu 12+ 内存要求:≥ 512MB 硬盘要求:至少 5GB 以上的剩余空间 服务器必须配置好 软件源 和 可连接外网 必须具有系 ...
- underscore里面的debounce与throttle
throttle 策略的电梯.保证如果电梯第一个人进来后,15秒后准时运送一次,不等待.如果没有人,则待机. debounce 策略的电梯.如果电梯里有人进来,等待15秒.如果又人进来,15秒等待重新 ...
- VS2013过期激活
然后点击"更改我的产品许可证",输入密钥 : BWG7X-J98B3-W34RT-33B3R-JVYW9 即可注册成功...
- C# 关于utf-8的研究
前提 如果一不小心把字符转成utf8的格式,但是却产生了乱码.这个时候要么就是寻找其他的转码方式,要么就不想要了,直接过滤吧. 这里说的是直接过滤的办法. 参考链接 https://netvignet ...
- sublim text3中的一些设置
{ "dictionary": "Packages/Language - English/en_US.dic", "font_face&q ...
- day_01 python基础 基本数据类型 if条件
1. python简介 解释型,弱类型,高级开发语言2. 第一个python程序编写 1. 标点符号(英文) 2. 编码格式(utf-8)3.变量 把程序运行产生的中间值储存起来,方便后面 ...
- 【研究】Tomcat远程代码执行漏洞(CVE-2017-12615)
一.Tomcat远程代码执行漏洞(CVE-2017-12615) 1.1 实验环境 操作机:windows 10 IP:192.168.1. ...
- zookeeper+dubbo简单部署方案
1.zookeeper服务 首先,我们需要下载:zookeeper-3.4.9 解压后,在conf文件夹中添加一个配置文件zoo.cfg,内容如下: tickTime=2000 dataDir=/Us ...
- 关于工具类静态方法调用@Autowired注入的service类问题
@Component //此处注解不能省却(0) 1 public class NtClient { 2 /** 3 * 日志 4 */ 5 private static String clazzNa ...
- mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...