扩展二叉树的中序序列创建二叉树?

一、前言

我们都知道,任意一棵二叉树的前序序列、中序序列、后序序列都是唯一的。但是,反过来是否唯一对应呢?

  • 🍎 先序序列:第一个结点一定是二叉树的根节点;
  • 🍎 中序序列:根节点在中序序列中必然将中序序列分割成两个子序列;
  • 🍎 后续序列:最后一个结点一定是二叉树的根节点。

这样,只要我们已知先序序列、中序序列,或者后序序列、中序序列,均能唯一的确定一棵二叉树。但是,如果已知任一种序列,无法唯一确定一棵二叉树。为什么呢?

二叉树

来看上面的二叉树,对于未扩展的二叉树前序序列972165348,我们仅从这个前序序列中无法反演出唯一的二叉树(也就是上面的二叉树),因为我们通过前序序列我们只知道根节点是9,无法区分左右子树,如果再知道中序序列便可以获取到左右子树,从而反演出唯一的二叉树。

(详细分析972165348:9确定是根节点,由上面的性质看出9一定存在左右子树,那么右侧的7一定是左子树根节点,但是2到底是7的左子树,还是7的右子树,或者是9的右子树都有可能,无法唯一确定。)

结论:普通的(未扩展)二叉树前序序列无法反演出唯一的二叉树,通过普通的前序序列和中序序列可以反演出唯一的二叉树。

原因:单独一个普通的二叉树序列,只能获取根节点,或者只能获取左右孩子的信息;而通过前序、中序或者后序、中序搭配可以同时获得根节点和左右孩子的信息。


二、单独一个扩展二叉树序列能否唯一确定二叉树?

如果是扩展二叉树(定义)的序列就另当别论了,参考文献中提到:

扩展二叉树的先序和后序序列都可以唯一确定一颗二叉树,而中序不可以。

1. 实例

如下图所示的二叉树,其扩展二叉树先序序列为972#1##6#53##4##8##,通过该序列可以唯一确定下面的二叉树。(如果不相信,你可以先尝试一下,然后再看后面的解答)

二叉树

上面扩展二叉树的中序序列为#2#1#7#6#3#5#4#9#8#,而该序列无法唯一确定上面的二叉树,比如下面这个二叉树的扩展二叉树序列同样为#2#1#7#6#3#5#4#9#8#。

具有相同扩展中序序列的二叉树

至此,我们发现单独一个扩展二叉树的先序序列可以唯一确定这个二叉树,但是单独一个扩展二叉树的中序序列无法唯一确定这个二叉树。为什么呢?请看下面的解释。

2. 原因

由于扩展二叉树的前序序列和后序序列两种情况类似,因此此处我们只讨论扩展二叉树前序序列和扩展二叉树中序序列。

二叉树

在扩展二叉树的序列中(上面的是未扩展的,自行脑补吧),首先具有这样一个性质:# 一定没有左右子树,非# 一定有左右子树

上述扩展二叉树前序序列是972#1##6#53##4##8##,具体反演过程:9确定是根节点,右侧的7一定是左子树根节点,2一定是7的左子树,因为如果是右子树的话,7后面一定会有#,2后面的#是其左子树,1是2的右子树,##分别是1的左右子树....。

原因:对于扩展的前序序列不仅能够获取到根节点的信息,还能通过#判断出现左子树结束,通过##判断出现右子树结束,因此同样可以唯一确定二叉树。但是扩展的中序序列两个结点之间只有一个#,所以无法唯一确定二叉树。

结论:单独扩展二叉树的先序序列可唯一确定这个二叉树,但是单独扩展二叉树的中序序列无法唯一确定这个二叉树。

(🥝 以上是我根据参考文献的理解,如有错误,欢迎指出,当然如果你觉着写的不错,点赞支持哦。 🥝)

以下为参考文献中的两张图,帮助理解:


三、参考文献

1. 扩展二叉树(#号法)先序和后续可确定二叉树,中序不可_zhanghuaichao的博客-CSDN博客_扩充二叉树

2. 关于中序创建二叉树_阿良7的博客-CSDN博客_中序建立二叉树

3. 中序序列建立二叉树_陪你到天明的博客-CSDN博客_中序建立二叉树


四、加入圈子

🍎欢迎大家加入组织,一起交流、学习,群内多为嵌入式爱好者,也有企业MCU、Linux大佬carry。🍎

企鹅群,前序遍历,欢迎交流

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kashine

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值