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 ...
随机推荐
- resultType和resultMap的区别
1.resultType和resultMap的区别 1>resultType 返回的结果类型 2>resultMap 描述如何将结果集映射到Java对象 2.resultMap节点 1&g ...
- controller运行springboot项目
搭建完springboot项目后,新建HelloController.java文件,编写main方法,启动HelloController.java,具体代码如图: 在浏览器访问127.0.0.1:80 ...
- Linux crontab定时任务命令使用记录
安装crontab 使用 crontab -v 如果提示没有该命令,则需要安装.安装也很简单,推荐使用yum安装.一条命令即可(yum install crontab),这里不多介绍. 下面是一些基础 ...
- Hadoop文章
hadoop入门--简单的MapReduce案例:https://blog.csdn.net/zhangt85/article/details/42077281?utm_source=blogxgwz ...
- CentOS 中安装 mysql 5.7+
参考:https://www.cnblogs.com/jimboi/p/6405560.html 1.下载rpm文件 wget https://dev.mysql.com/get/mysql57-co ...
- 说说Cookie和Session(会话)的区别?
1.Cookie 通俗讲,是访问某些网站后在本地存储的一些网站相关信息,下次访问时减少一些步骤.更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户 ...
- Nginx负载均衡详解
upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...
- 洛谷P2501 bzoj1049 [HAOI2006]数字序列
题目链接 bzoj 洛谷 题解 第一问: 假如 \(i < j\) 如果 \(j\)能从\(i\)转移过来 显然中间空隙必须足够 例如:\(50\) \(53\) \(53\) \(52\) 就 ...
- Echarts图表横坐标显示不全
xAxis: { "axisLabel":{ //加上这个强制显示 interval: 0 }, type: 'category', data: self[theDataKey]. ...
- vue 在使用v-html绑定的时候,里面的元素不会继承外部的css,解决方案
问题 想用vue绑定父文本生成的HTML内容,但是发现CSS样式根本不生效,选择器没起作用 代码: <div class="announcedetailImg" v-html ...