【算法】完全二叉树的层序遍历

2023-10-31

题目描述

 已知完全二叉树的先序/中序/后序序列,求层序序列

算法原理

 没有什么好说的,因为是完全二叉树,所以可以由根节点直接找到孩子节点

        如果根节点root是从0开始,那么左孩子就是root*2+1

                                                            右孩子就是root*2+2

        如果根节点root是从1开始,那么左孩子就是root*2

                                                            右孩子就是root*2+1

因为是完全二叉树,也不是特别担心超限的问题

还有一种特殊情况就是给你一个CST(完全BST)树的每个节点的值,让你求层序遍历的结果,这种题就可以吧给出的节点从小到大排序,排序完成后的序列就是中序序列,然后按照上面的方法递归就可以了

核心代码实现

int t=0;                        //代表先序/中序/后序序列走到那个位置了
void inOrder(int root){
	if(root>=n)	return ;        //超过范围
    //level[root]=pre[t++];      如果是先序序列在这个位置
	inOrder(root*2+1);          //递归左子树
	//level[root]=in[t++];      如果是中序序列在这个位置
    inOrder(root*2+2);          //递归右子树
    //level[root]=post[t++];      如果是后序序列在这个位置
}

例题

 PAT甲:    1064 Complete Binary Search Tree (中序转层序)

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

【算法】完全二叉树的层序遍历 的相关文章

  • MainWindow 简介

    致介绍了 Qt 各个模块的相关内容 目的是对 Qt 框架有一个高屋建瓴般的了解 从现在开始 我们将开始尝试使用 Qt 开始新的历程 由于我们已经比较详细地介绍过信号槽的相关内容 因此我们可以用一个新的程序开始进一步的学习 同时对信号槽有一个
  • 【Unity3D小功能】Unity3D中实现Text显示版本功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 在项目开发中 会遇到要控制版本的情况 比如说

随机推荐

  • Excel只能做表格?那是你不会用!10分钟做出高大上可视化图

    点击进入看图评论 很多公司都要求员工熟练的掌握Excel But 绝大多数人所谓的熟练使用Excel 估计也只会一些简单的表格和知道加减乘除 求和吧 再难一点 估计就真的把自己难倒了 讲真 Excel还是很牛的 只是你不会 话不多说 今天就
  • 解决Hbuilder打包的app返回键直接退出

    问题描述 Hbuilder打包的app如果点击手机返回键 app会直接退出 返回不了上一页 处理子页面点击返回键直接退出 无法返回 代码如下 这个不是写在首页 写在子页面 子页面才能返回 写在首页点击返回就是退出 不用引入mui js 都是
  • stc51单片机串口接收多字节数据

    stc51单片机串口接收多字节数据 简介 51单片机有2个定时器 一个做串口波特率 一个做数据截止帧延时检测 硬件平台测试使用的是stc8的单片机 但是可以往51移植 代码 include stc8 h unsigned char flag
  • 字典序排数相关算法

    记录两道与数字的字典序排数相关的题目 字节常考 把数字的字典序画出来看看马上就明白了 class Solution public List
  • 企业——企业架构的基本数据流向

    一 数据流向 1 基本的数据流向 client gt server 直接由客户端流向服务端 在实际生产环境中因为访问量大 服务器承受不了压力 因此基本不会使用 2 企业架构的数据流向 企业采用分布式的数据流向 cdn 缓存加速reverse
  • STM32中断定时,控制LED灯

    1 include led h 2 3 void TIM3 Int Init u16 arr u16 psc 4 5 TIM TimeBaseInitTypeDef TIM TimeBaseStructure 6 NVIC InitType
  • redis 由浅入深之 数据结构

    Redis 缓存数据所支持的数据结构如下 一 字符串 字符串 string是最简单的类型 你可以理解成与Memcached一模一样的类型 一个key对应一个value 其上支持的操作 与Memcache的操作类似 但它的功能更丰富 字符串指
  • JavaScript特殊的对象1:数组

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 为什么说数组是特殊的 对象 因为数组可以通过构造函数Array 创建 它的原型同样也是Array prototype 它的对象类型时Array 它具有自身属性lengt
  • Android App 性能优化之图片优化

    接下来说明一下关于其他内存问题 图片问题 作为一个优秀的Android开发者 在图片的类型选择 图片显示前的处理都是要好好考虑的 因为不同类型图片在Android中的显示代价是不同的 使用不同显示方式代价也是不同的 首先看一下图片类型png
  • compressor/limiter/expander/noisegate相关总结

    一 简介 在学习音频数字信号处理的DRC Dynamic Range Control 时 遇到几个概念 分别是compressor limiter expander noisegate 本篇文章谈一谈我对这些模块的理解 二 Compress
  • Mysql5.5下载安装

    1 下载安装mysql压缩包 解压 双击安装包参考地址 https dev mysql com downloads mysql 这里选择的是5 5的版本
  • 给你安利一款国产良心软件uTools

    前言 大家好 我是xiezhr 最近由于换了新电脑 也是在各种折腾搭建开发环境 安装各种常用软件 今天呢给大家安利一款你可能没用过的国产良心软件uTools 这也是我刚刚拿到电脑后安装的第一款软件吧 第一次知道这软件是在B站刷程序员鱼皮up
  • H.264(H264)视频文件的制作

    一 准备工作 1 下载并安装优酷客户端 2 下载ffmpeg可执行文件 解压可用 不需要下载源码自己编译 ffmpeg可执行文件下载链接 http download csdn net detail caoshangpa 9492758 二
  • GD32基本定时器的定时周期计算

    GD32基本定时器的定时周期计算 一 基本定时器原理结构框图 TIMER5 基本功能流程描述 基本定时器仅有一个时钟源TIMER CK 用来驱动计数器预分频器 当CEN 计数器使能 置位 TIMER CK经过预分频器 预分频值由TIMERx
  • 程序员工资一般多少_一般程序员真实工资 程序员工资薪酬大起底

    工资是个有趣的话题 每个人对这个话题都有自己的想法 它同时也是同在打工的人们之间一个独特的禁忌 一般的程序员真是工资是多少 想必这是很多程序员想问而又问而不得的问题 下面小编从几个大公司和一些小公司的程序员工资来做个简单对比 1 百度 最低
  • git将当前分支上修改的东西转移到新建分支

    比如我在A分支做了一些修改 现在由于某种原因 如A分支已经合并到master 不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改 那么现在我们可以有两种简单的做法完成这一需求 第一种方法 我们不需要在A分支做c
  • QQ邮箱“550 Mailbox unavailable”错误的问题

    最近搞了一个小项目网站 步数管家 其中的一个功能是 用户注册的时候 需要使用邮箱进行验证码的确认操作 本来就是一个小项目 所以 没有用第三方的服务 自己在服务器上搭建了邮箱服务器 并开通了一些API接口 需要发送验证码邮件的时候 直接调用接
  • jmeter做接口和自动化常见的使用方法

    目录 一 提取器 1 JSON 提取器的应用场景 1 1 提取某个特定值 1 1 1 切片提取获取某个位标值 1 2 提取多个值 1 3 按条件查询按 1 3 1 件提取是一个常用的方法 1 3 2 还有其余几种用法 1 4 提取值组成的列
  • 3.2-并发控制:同步

    复习 互斥 自旋锁 互斥锁 futex 是时候面对真正的并发编程了 本次课回答的问题 Q 如何在多处理器上协同多个线程完成任务 本次课主要内容 典型的同步问题 生产者 消费者 哲学家吃饭 同步的实现方法 信号量 条件变量 一 线程同步 同步
  • 【算法】完全二叉树的层序遍历

    题目描述 已知完全二叉树的先序 中序 后序序列 求层序序列 算法原理 没有什么好说的 因为是完全二叉树 所以可以由根节点直接找到孩子节点 如果根节点root是从0开始 那么左孩子就是root 2 1 右孩子就是root 2 2 如果根节点r