二叉树的遍历问题

        我们都知道,如果已知一棵二叉树的先序和中序序列或者中序和后序序列,都可以得到唯一的一棵二叉树。

      大家有时候会对二叉树的序列问题很是烦恼,不知道从何下手,我也有过同样的经历,看着那两趟密密麻麻的字母不知道该怎么办,做一道普通难度的题大概需要十分钟,这样的效率着实让人抓狂。之后耐下心来好好研究了一下,发现这里边还是有窍门的,不像之前想的那样呆板无力,那么我就把自己学习的一点小小的心得跟大家分享一下,希望能对一些同学有所帮助……

      ok,直接杀入主题,假设我们知道一棵二叉树的先序序列为abdfghce,中序序列为bfdhgaec,那么怎么画出这棵二叉树呢?首先我们都知道的是先序序列遍历顺序为“根左右”,中序序列为“左根右”,那么我们来看先序序列,第一个‘a’即为二叉树的根结点,再看中序,一个‘a’将其一分为二,左边为左子树,右边为右子树,这样的话这棵二叉树的大体框架就出来了。

      然后我们进入它的左子树,先序序列“bdfgh”,中序序列“bfdhg”,继续由前者确定它的根为‘b’,再一看中序,有同学蒙了,不是“左根右”吗,怎么第一个是根,这就说明在以‘b’为根结点的二叉树中是没有左子树的,于是乎也就确定了它的大体结构,‘b’为根结点,无左子树,右子树先序序列为“dfgh”,中序序列为“fdhg”,再进入它的右子树,又是一棵崭新的二叉树,根据前边的经验可知它的根结点为‘d’,左孩子(准确的说是左子树,因其只有一个结点,故已确定其位置)是‘f’,右子树先序序列为“gh”,中序序列为“hg”,所以在右子树中根结点为‘g’,左孩子为‘h’,没有右孩子。这样以‘a’为根结点的二叉树的左子树已经确定,右子树就简单了,可以判定‘c’为其右孩子,‘e’为以‘c’为根结点的二叉树的左孩子。

     至此这棵二叉树就被唯一地确定了:

     ps:如果已知中序和后序序列也可根据以上步骤得到唯一的二叉树。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

beyond_LH

您的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值