结合不同的遍历方式(前、中、后)重建二叉树

遍历方式

二叉树遍历分为前序遍历中序遍历后序遍历。(网上有很多相关资料,所以本文只会简单提一下,以便整篇内容的理解)

前序遍历

  1. 输出根节点
  2. 前序遍历左子树
  3. 前序遍历右子树

中序遍历

  1. 中序遍历左子树
  2. 输出根节点
  3. 中序遍历右子树

后序遍历

  1. 后序遍历左子树
  2. 后序遍历右子树
  3. 输出根节点

尝试根据结果结合不同的遍历方式重建二叉树

应该有人在面试时被问过:三种不同的遍历方式,取其中两种,哪种结合方式可以逆推出二叉树,哪种结合方式不能。

答案是:

  1. 前序 + 中序 √
  2. 中序 + 后序 √
  3. 前序 + 后序 ×

所以很多文章都说三种遍历方式中中序遍历更重要是有其道理的。

接下来我们根据测试用例分别根据三种不同的结合方式进行模拟。

测试用例:

在这里插入图片描述

  1. 前序输出:1 2 4 5 7 3 6
  2. 中序输出:4 2 7 5 1 3 6
  3. 后序输出:4 7 5 2 6 3 1

前序 + 中序

  1. 根据前序规则寻找根节点,可知根节点在数据第一位,为 1
  2. 根据中序规则可知,根节点左边数据为左子树、右边数据为右子树,所以得出左子树(4 2 7 5)根节点(1)右子树(3 6)
  3. 将 2 步得出的左子树和右子树分别进行 1、2 步的流程,最终即可确定一颗唯一的树

总结流程就是前序用来找根节点,中序用得到的根节点划分左右子树,递归得出二叉树。

中序 + 后序

  1. 根据后序规则寻找根节点,可知根节点在数据最后一位,为 1
  2. 根据中序规则可知,根节点左边数据为左子树、右边数据为右子树,所以得出左子树(4 2 7 5)根节点(1)右子树(3 6)
  3. 将 2 步得出的左子树和右子树分别进行 1、2 步的流程,最终即可确定一颗唯一的树

总结流程就是后序用来找根节点,中序用得到的根节点划分左右子树,递归得出二叉树。

前序 + 后序

区别于前两种组合,当前组合中的前序和后序可以确定二叉树的根,但都不能确定剩余数据是在左子树还是右子树中,导致无法逆推出一个唯一的树。

如下二叉树,都可以得出前序和后序满足的输出,但树不相同:

在这里插入图片描述

这是由于,当二叉树某个节点只有一个子节点的时候,无论这个节点是左子节点还是右子节点,对于前序和后序遍历的结果是没有影响的。

所以只根据前序 + 后序无法逆推出一个唯一的二叉树。

总结

本文简单描述了二叉树的三种遍历规则,并解释了为什么前序 + 中序、中序 + 后序可以逆推出唯一的二叉树,而前序 + 后序就不行,希望对你有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值