#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的更多相关文章

  1. PAT 1064 Complete Binary Search Tree[二叉树][难]

    1064 Complete Binary Search Tree (30)(30 分) A Binary Search Tree (BST) is recursively defined as a b ...

  2. PAT甲级:1064 Complete Binary Search Tree (30分)

    PAT甲级:1064 Complete Binary Search Tree (30分) 题干 A Binary Search Tree (BST) is recursively defined as ...

  3. PAT题库-1064. Complete Binary Search Tree (30)

    1064. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...

  4. pat 甲级 1064. Complete Binary Search Tree (30)

    1064. Complete Binary Search Tree (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...

  5. 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 ...

  6. PAT 甲级 1064 Complete Binary Search Tree (30 分)(不会做,重点复习,模拟中序遍历)

    1064 Complete Binary Search Tree (30 分)   A Binary Search Tree (BST) is recursively defined as a bin ...

  7. pat 甲级 1064 ( Complete Binary Search Tree ) (数据结构)

    1064 Complete Binary Search Tree (30 分) A Binary Search Tree (BST) is recursively defined as a binar ...

  8. PAT 甲级 1064 Complete Binary Search Tree

    https://pintia.cn/problem-sets/994805342720868352/problems/994805407749357568 A Binary Search Tree ( ...

  9. 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 ...

随机推荐

  1. 【离散数学】 SDUT OJ 集合的包含

    集合的包含 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知含n个元素的集合的子集 ...

  2. mysql的主从与读写分离

    首先我们搭建两个MySQL服务器,这一步地球人都知道. 搭建好后,把两个数据库的数据同步.这一步就要用到我们前面说的备份和还原了.注意:我们只要同步MySQL以外的数据,MySQL库中的帐号密码肯定不 ...

  3. ansible基本模块-copy

    ansible   XXX   -m copy  -a  “src=XXX  dest=XXX  owner=root  group=root  mode=0755”

  4. Android SharedPreferences应用实例(记录App的使用次数)

    1.介绍 2.使用方法 3.java后台 package com.lucky.test46sharedpreferences_apply; import android.content.SharedP ...

  5. php opcache 详解

    PHP性能提升之OPcache相关参数详解 工具 memory 发布于December 15, 2016 标签: PHP OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PH ...

  6. 洛谷 P4036 [JSOI2008]火星人(splay+字符串hash)

    题面 洛谷 题解 首先,我们知道求最长公共前缀可以用二分答案+hash来求 因为有修改操作, 考虑将整个字符串的hash值放入splay中 接着就是splay的基本操作了 Code #include& ...

  7. linux 第八章 高级键盘

    1.clear:清屏 2.history:显示历史命令列表 3.Ctrl+A:移动光标到行首 4.Ctrl+E:移动光标到行尾 5.Ctrl+F:光标向前移动一个字符 6.Ctrl+B:光标向h后移动 ...

  8. PIE SDK临时元素的绘制

    1. 功能简介 在数据的处理中会用到临时元素的绘制,用于当前显示:临时元素包括点.线.面.文本.图片五种元素:目前PIE SDK支持这五种元素的绘制,下面对五种临时元素的绘制功能进行介绍. 2. 功能 ...

  9. python练习七十:图片生成

    题目:使用python生成类似于下图的字母验证码图片 实现代码: from PIL import Image,ImageFont,ImageDraw,ImageFilter import random ...

  10. 设置IIS允许下载.config文件

    <configuration> <system.webServer>        <security>            <requestFilteri ...