博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT1064 Complete Binary Search Tree (30)(BST)
阅读量:7226 次
发布时间:2019-06-29

本文共 1026 字,大约阅读时间需要 3 分钟。

题意:

给出一个完全二叉搜索树的键值序列,要求输出层序输出

要点:

完全二叉搜索树的根节点是可以唯一确定的,所以一开始排序一下,再用dfs即可。这题我思路是想到了,但是生成根节点的地方写的有点问题,然后要输出层序是可以用dfs中序遍历再加一个数组直接输出的,这里可以学习一下。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lowbit(i) ((i)&(-i))using namespace std;const int INF = 0xfffff;const int maxn = 2055;int num[maxn],res[maxn];int n;void dfs(int l, int r,int pos) { if (l > r) return; int n = r - l + 1; int exp = log(n+1) / log(2); int last = n - (pow(2, exp) - 1); int root = l + (pow(2, exp - 1)-1) + min(last, (int)pow(2, exp - 1)); //cout << exp<<" "<
<
<< endl; res[pos] = root; dfs(l, root-1,2*pos+1); dfs(root+1, r,2*pos+2);}int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &num[i]); } sort(num, num + n); dfs(0, n - 1,0); for (int i = 0; i < n-1; i++) printf("%d ", num[res[i]]); printf("%d\n", num[res[n - 1]]); return 0;}

转载于:https://www.cnblogs.com/seasonal/p/10343621.html

你可能感兴趣的文章
Multi-Mechanize工程目录结构说明
查看>>
halt
查看>>
标准ACL+扩展ACL+命名ACL
查看>>
Meteor应用的启动过程分析
查看>>
九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式
查看>>
欲哭无泪,联想笔记本性价比
查看>>
很简单的在Ubuntu系统下安装字体和切换默认字体的方法
查看>>
我的友情链接
查看>>
dojo框架用hitch实现函数与上下文的绑定
查看>>
ubuntu编译安装vim7.4
查看>>
python之利用PIL库实现页面的图片验证码及缩略图
查看>>
IP-COM设置×××
查看>>
VPC配置案例
查看>>
十年IT运维谈(五):要专业化还是平台化?
查看>>
分享超级给力的一个外发光Shader
查看>>
oblog_4.6_SQL 语句
查看>>
通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
查看>>
对象实例化、字符串的使用方法
查看>>
keepalived基于LVS实现高可用,实现web服务的高可用
查看>>
80端口被Microsoft-HTTPAPI/2.0占用的解决办法
查看>>