二叉树:已知前序序列与后序序列建树

数据结构(C语言第2版) 课后习题答案之第五章 树和二叉树 目录 第5章 树和二叉树 一、选择题 二、应用题 (1)试找出满足下列条件的二叉树 (2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C (3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。 (4)已知下列字符A、B、C、D、E、F、G的权值分别为3、12、7、4、2、8,11,试填写出其对应哈夫曼树HT的存储结构的初态和终态。 ... 阅读详情

二叉树:已知前序与后序建树

已知前序与中序、后序与中序建树是常遇到的算法问题。若已知前序序列与后序序列,要求输出满足条件的树的个数或者输出所有可能的树的中序序列,该怎么解决?下面我们一步步讨论这个问题。

首先,已知一个树的结点数n,共有多少种树形?(或者,已知一颗树的先序/中序/后序序列,共有多少种树形?)
答案是 C m n / ( n + 1 ) C_{m}^{n}/(n+1) Cmn​/(n+1)种。点这里了解一下卡特兰数
那么,这里就有一种暴力解法,就是建立所有可能的树形,将先序序列填入某一树形,比较此树的后序序列是否与给定后序序列相同,若相同则找到一个解,若不相同,则填入下一个树形,直到填完所有可能树形。当树的结点为10时,那么总共有16796种树形,因此这种暴力解法时间复杂度相当高。
那么我们换一种思考方式,我们先来看看先序与后序序列的排布规律。以下面这棵树来举例:

在这里插入图片描述

其先序序列为: 1 2 3 4 6 7 5
后序序列为:2 6 7 4 5 3 1

首先我们要知道:

先序序列遍历顺序是:根结点-左子树-右子树

后序序列遍历顺序是:左子树-右子树-根结点

很明显,我们可以看出结点在先、后序列中的排布有以下这些特征:
【1】、在先序序列中,根结点在子树中的结点前面,在后序序列中,根结点在子树中的结点后面。
【2】、以任一节点为根结点时,其子树在后序序列中排布都是先左子树后右子树,而根结点排在最后。
那么,反过来思考,已知这个先序与后序序列所确定的树是唯一的吗?进一步推广:怎么通过先序与后序序列判断是否存在唯一的树呢?

现在,我们来一步步分析已知先序与后序的建树过程:

①、根据特征【1】可知:根结点为先序序列第一个节点以及后序序列最后一个结点,因此根结点为1。
在这里插入图片描述
②、先序序列中第二个结点为2,其在后序序列中的位置是第一个,那么根据特征【2】我们可以知道结点2是没有子树的,而且结点2要么在根结点的左子树,要么在右子树。假设结点2在右子树,那么由特征【2】可知根结点1没有左子树,而且先序序列中结点2后面的结点全部为结点2的子树上的结点。再看后序序列,由特征【2】可知,结点2后面的结点不可能是其子树上的结点。因此,假设显然与已知矛盾。这样,我们又知道结点2是结点1的左孩子,且结点2没有子结点。
在这里插入图片描述
③、先序序列第三个位置上的结点为3,该结点在后序序列中排倒数第二个。由②可知,结点3必然是根结点1的右孩子。
在这里插入图片描述
④、先序序列第四个位置上的结点为4,该结点在后序序列中排第四个。因为结点4在先序序列中排在结点3后面,又因为结点3是根结点1的右孩子,所以结点4只可能在结点3的子树上。结点3的子树可能出现的情况是:只有左子树,只有右子树,左右子树都有。因为在后序序列中,结点4左边是结点6、7,右边是结点5。所以结点5并不在结点4的子树上,所以结点3既存在左子树又存在右子树。这样的话,出现在结点3后面的第

LeetCode 根据前序和后序遍历构造二叉树(递归+图解) 返回与给定的前序和后序遍历匹配的任何二叉树。 pre 和 post 遍历中的值是不同的正整数。 示例: 输入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1] 输出:[1,2,3,4,5,6,7] 提示: 1 <= pre.length == post.length <= 30 pre[] 和 post[] 都是 1, 2, ..., pre... 阅读详情

相关推荐

基于深度强化学习的无地图移动机器人导航:让机器人在未知环境中智能前行

虽然仍然面临sim-to-real差距、安全性保证等挑战,但随着算法的不断改进和计算能力的提升,基于DRL的无地图导航技术将在服务机器人、工业自动化、太空探索等领域发挥越来越重要的作用,为人类生产和生活带来更大便利和价值。对于复杂环境下的动态目标导航问题,研究人员提出了多智能体协同控制算法(如Teamwork-Net算法),通过多个智能体分别控制机器人的运动速度与运动方向,协同实现更高效、更稳定的导航性能。深度强化学习结合了深度学习的感知能力和强化学习的决策能力,非常适合解决无地图导航问题。

weixin_45131592的博客 902

常微分方程 (ODE) 和 随机微分方程 (SDE)

常微分方程(Ordinary Differential Equations, ODE)和随机微分方程(Stochastic Differential Equations, SDE)是数学中描述系统动态行为的重要工具。它们有一些相似之处,但在处理随机性方面存在显著差异。

weixin_39699362的博客 4384

Diffix3D+复现

上下载模型,将其放在一个目录中,并将目录名填在demo代码中from_pretrained的cache_dir参数里。目录结构应该是"<PATH>/nvidia/difix/…给的requirements文件中pytorch和xformers的版本没有指定,这里测试过以下版本,可以成功运行。将readme中的demo代码新建一个python脚本复制进去,然后将脚本放在src目录中运行。如果遇到网络问题无法加载huggingface上的预训练模型,可以手动从。如果出现,以下错误重新。

NeverMakeIt的博客 1085

华为海思IC笔试通关秘籍:物理/电路/工艺三大方向高频考点解析(附真题)

本文深度解析华为海思IC笔试中物理设计、电路设计和工艺制造三大方向的高频考点与备考策略。针对华为海思IC笔试机考的特点,提供了方向选择建议、核心知识梳理及真题实战技巧,帮助考生构建系统性复习框架,高效备战,提升通关成功率。

mars5的博客 1309

LabVIEW 调用MATLAB 进行图像处理的实现

程机械及设备的变形、振动、冲击、粗糙度、刚度和强度等特性,还可用在土木结构、水利设施的变形测量[4][5]。因此,该技术在机械、土木、水利、电器、航空航天、兵器工业及生物医学等领域的检测中具有非常重要的地位。将物面前方空间的散斑用摄像设备记录下来,当物体运动或由于受力而变形时,这些随机分布的散斑图也随之在空间按一定的规律运动,因此能用记录的散斑图在计算机上分析物体的运动和变形,这就是电子散斑技术。当物体的漫反射表面被激光照射时,漫反射的光波在物体表面的前方相互干涉,由于漫反射光的。

qq_37971227的博客 3873

尝试使用CubeMX做stm32开发之九:SYS配置

参考《STM32中文参考手册_V10》,研究CubeMX中有关SYS的配置

Forster-C的博客 9420

(14-3)值分布式算法:QR-DQN (Quantile Regression DQN)算法

QR-DQN(Quantile Regression DQN)是一种强化学习算法,它是深度 Q-网络(Deep Q-Network,DQN)的一个变种,旨在更好地处理值函数的不确定性。QR-DQN的实现步骤与传统的DQN类似,但在目标分布计算和损失函数方面有一些不同之处,这使得它能够更好地处理值函数的不确定性。QR-DQN(Quantile Regression DQN)算法的核心思想是将值函数表示为一个分布,而不是传统的单一值估计。在下面的内容中,将讲解一个使用QR-DQN算法的例子。

码农三叔 2053

化工过程设计软件:Aspen Plus二次开发_(2).二次开发概述

假设我们需要创建一个自定义的换热器模型,该模型能够计算两个物流之间的热交换量,并根据传热系数和换热面积进行调整。ACM 模型代码示例!自定义换热器模型!参数:传热系数 U (W/m^2·K)!换热面积 A (m^2)!热物流 T_hot_in (K), T_hot_out (K), F_hot (kmol/h)!冷物流 T_cold_in (K), T_cold_out (K), F_cold (kmol/h)!模型输入!U - 传热系数!A - 换热面积!

kkchenjj的博客 370

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: PAT (Advanced Level)1110 Complete Binary Tree (25分)
下一篇: PAT(Advancedlevel) 1033 To Fill or Not to Fill (25分)
一颗橡树
博客等级 码龄8年 23粉丝 44原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值