7-15 完全二叉搜索树 (30 分)

2023-05-16

题目描述:

一个无重复的非负整数序列,必定对应唯一的一棵形状为完全二叉树的二叉搜索树。本题就要求你输出这棵树的层序遍历序列。

输入格式:
首先第一行给出一个正整数 N(≤1000),随后第二行给出 N 个不重复的非负整数。数字间以空格分隔,所有数字不超过 2000。

输出格式:
在一行中输出这棵树的层序遍历序列。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:
10
1 2 3 4 5 6 7 8 9 0
输出样例:
6 3 8 1 5 7 9 0 2 4

分析:

这个题真不会,但是我依然靠着我的混分大法混到了6分。
后来经过学长指点,这个题终于能过了。但是思路却还是不明确。
首先,这是一颗二叉搜索树。那么我首先一定是要将给出的序列进行排序。排序后的序列,就是这颗完全二叉树的中序遍历。
然后,在进行一个非常奇怪的操作。我反正还是不能十分理解。
暂时把AC代码贴上来:

#include"stdio.h"
#include"string.h"
#include"algorithm"
using namespace std;
int a[1001];
int b[1001];
int cnt;
int n;
void dfs(int x)
{
    if(x>n)
        return ;
    dfs(2*x);
    b[x]=++cnt;//对应应该第x号输出对应的第a数组的第cnt元素。
    dfs(2*x+1);
}
int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
        scanf("%d",&a[i]);
    sort(a+1,a+n+1);
    dfs(1);
    for(int i=1; i<=n; i++)
        if(i==1)
            printf("%d",a[b[i]]);
        else
            printf(" %d",a[b[i]]);
}

经过思考加实验, 我发现,这个方法还可以用于给你一个完全二叉树的中序序列,让你求出这颗二叉树的层序序列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7-15 完全二叉搜索树 (30 分) 的相关文章

随机推荐

  • 如何将模型alembic与动画alembic相关联?

    在三维动画制作时 xff0c 许多制作部门需要同时进行 xff0c 当模型部门制作好模型之后会把publish好的模型分给材质 xff0c 动画 xff0c layout等部门同时进行制作 xff0c 有时候项目要求角色有不同的材质和UV
  • Cesium标注实体【Entity】增、删、改、查

    实体实例将多种形式的可视化聚合到一个高级对象中 它们可以手动创建并添加到 Viewer entities 或由数据源生成 xff0c 例如 CzmlDataSource 和 GeoJsonDataSource 一 Entity 增加 方法一
  • hdu1085(生成函数)

    题目 我终于会用对拍器了 xff0c 我总是不敢去尝试新事物 xff0c 去年就像学 xff0c 上网搜过几次资料 xff0c 感觉烦就放弃了 xff0c 但事实证明其实非常简单 xff0c 对于我未来的coding生活来说实在是大有裨益
  • sumo osmWebWizard.py不生成OSM.sumocfg

    osmWebWizard在确定地图范围和车辆数 xff0c 点击Generate Scenario选项后 生成文件只含有osm netccfg和osm polycfg xff0c 如图 xff1a 主要原因是 当前版本默认仅勾选Add Po
  • vue封装Axios

    Axios的封装 安装axios npm install axios span class token punctuation span span class token comment 安装axios span 引入 一般在项目的src目
  • docker学习笔记(一)—— ubuntu16.04下安装docker

    本文开发环境为Ubuntu 16 04 LTS 64位系统 xff0c 通过apt的docker官方源安装最新的Docker CE Community Edition xff0c 即Docker社区版 xff0c 是开发人员和小型团队的理想
  • Centos7 安装teamviewer

    需求 需要在centos7服务器上安装最新的centos7 一 前期准备 下载teamviewer安装包 xff1a teamviewer官网 使用xftp把下载的文件传到服务器对应的文件夹中 二 安装步骤 启动前准备环境 1 关闭防火墙
  • 字典序最大的子序列(维护单调栈)

    题意 xff1a 找到给出序列的字典序最大的子序列 思路 xff1a 维护单调栈即可 代码 xff1a span class token macro property span class token directive keyword i
  • C++(7-8章)笔记

    第七章 函数 C 43 43 的编程模块 7 xff0e 1函数 1 xff0c 函数如何返回值的 xff1f 答 xff1a 函数通过将返回值复制到指定的cpu寄存器或内存单元中来将其返回 随后 xff0c 调用程序将查看该内存单元 返回
  • 2020/2/20

    区域赛复现 xff1a 1小时 C 43 43 两章 xff1a 3小时 https www cnblogs com yrz001030 p 12340003 html 补了区域赛一题 xff1a 1小时 几何基础 43 2题 xff1a
  • 图论总结

    https www cnblogs com nervendnig p 9151437 html https www cnblogs com zhsl p 3271754 html
  • 使用栈实现进制转换

    使用栈实现进制转换 题目描述 使用栈将一个很长 xff08 gt 30 xff09 的十进制数转换为二进制数 分析 xff1a 此处虽然讲了用栈操作 xff0c 但是很明显我们可以不用 xff0c 直接用数组保存 当然用栈也一样 通过分析
  • 奇怪的棋盘

    题目描述 CC喜欢下棋 xff0c 她有一天去商店发现有很多很奇怪的棋盘 xff0c 那些棋盘的长宽不一样 xff0c 宽永远是2 xff0c 然后长有从1 n等等 然后那个商店还卖很奇怪的棋子 xff0c 都是1 2的大小 xff0c C
  • 萝卜的冒泡排序

    题目描述 萝卜上次已经说过要给各位同学出一道冒泡排序 xff0c 那么此题就以冒泡排序为主吧 xff0c 可是实验室的学长学姐觉得学弟学妹们都很厉害 xff0c 所以就加了各种各样的条件 xff0c 最 终萝卜还是选择加一些条件 xff0c
  • 直接插入排序

    直接插入排序 题目描述 利用直接插入排序算法实现线性表的排序 要求输出第k趟排序的结果 例如原来线性表为 xff1a 26 12 25 4 36 15 21 第一趟直接排序排序结果为 xff1a 12 26 25 4 36 15 21 xf
  • 习武之人

    题目描述 Edmondsiu用沙袋练习武术 Edmondsiu希望把沙袋摆在他家豪宅里面 Edmondsiu的豪宅有一个由11的地砖铺成的1n的院子里 Edmondsiu是处女座的 xff0c 所以他要把一个沙袋正好摆在一个地砖上 xff0
  • centos6下安装与配置squid代理

    1 安装squid yum span class hljs keyword install span squid y 2 编辑配置文件 vim etc squid squid conf span class hljs preprocesso
  • 我卢本伟没有开挂!

    题目描述 众所周知 xff0c 卢本伟没有开挂 xff0c 如何验证他没有开挂呢 xff1f 这里我们发现一个算法通过输出d能够证明他有没有开挂 1 xff1a 如果 n 61 0 xff0c 结束算法 2 xff1a find the s
  • 邻接矩阵

    题目描叙 xff1a 无向图的表示方法邻接矩阵 xff0c 需打印到屏幕 有权 分析 xff1a 邻接矩阵的核心思想便是顶点表和边表 我们可以定义一个结构体 xff0c 里面包含一个顶点表 xff08 即一个vexs一维数组 xff09 x
  • 7-15 完全二叉搜索树 (30 分)

    题目描述 xff1a 一个无重复的非负整数序列 xff0c 必定对应唯一的一棵形状为完全二叉树的二叉搜索树 本题就要求你输出这棵树的层序遍历序列 输入格式 xff1a 首先第一行给出一个正整数 N xff08 1000 xff09 xff0