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 ...
随机推荐
- DRF中的版本控制
一.为什么要有版本 某些客户端 使用低版本只维护不开发新功能 v1 主要的产品还要不断的更新迭代功能 v2 API 版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据). ...
- ORA-03113 : end-of-file on communication channel
现象一: 数据库startup时,出现数据库无法正常mount,并报ORA-03113错误. SQL> startup ORACLE instance started. Total System ...
- EL表达式的语法与应用
EL(是Expression Language的缩写),使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护. EL表达式的语法: 语法:$(EL 表达式) $ 和 ...
- Reviewing notes 1.1 of Advanced algebra
♦Linear map Definition Linear map A linear map from vector space V to W over a field F is a function ...
- SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...
- jQuery EasyUI Datagrid组件默认视图分析
在Datagrid基础DOM结构的一文中,我对Datagrid组件的骨架做了很详细的描述.有了骨架还并不完整,还得有血有肉有衣服穿才行.强大的Datagrid组件允许我们自己定义如何在基础骨架上长出健 ...
- QQ在线状态的使用
在网页中显示QQ在线状态并点击后发起对话,是很多门户网站常见的一个功能,这两天就碰到这样一个.原以为很简单,结果还是折腾了半天,虽然是个小问题,但也值得记录一下. 按以前的经验,网上有很多QQ在线代码 ...
- C++_类和动态内存分配6-复习各种技术及队列模拟
知识点: 队列:是一种抽象的数据类型(Abstract Data Type),可以存储有序的项目序列. 新项目被添加在队尾,并可以删除队首的项目.队列有些像栈.栈是在同一端进行添加和删除.这使得栈是一 ...
- C++_类继承5-抽象基类
abstract base class,ABC 抽象基类 有时候is-a规则并不像看上去那么简单,例如圆和椭圆的关系.圆是椭圆的特殊情况.椭圆可以派生出圆.但是椭圆的数据成员及方法对于圆来说是信息冗余 ...
- [jQuery] 在线引用地址
百度静态资源公共库: http://libs.baidu.com/jquery/1.9.1/jquery.js jQuery网站: http://code.jquery.com/jquery-1.9. ...