树的先序、中序和后序遍历知识点讲解

举报
Linux猿 发表于 2021/11/25 22:31:54 2021/11/25
【摘要】 🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


 研究生考试中,树的遍历几乎是考试的必考知识点,几乎所有的树相关的算法都需要对树进行遍历。本篇文章主要讲解树的先序遍历,中序遍历和后续遍历中的一个知识点。

一、基础知识

先序遍历、中序遍历、后序遍历中的先、中、后表示的是根结点遍历的顺序。先序遍历就是,先遍历根节点,然后后遍历该根节点的左子树,最后遍历该根节点的右子树。其他两种遍历方式以此类推。需要注意的是,三种遍历都是可以以递归的方式进行遍历,这一点很重要。

对于二叉树来说

先序遍历==》根结点,左子树,右子树;

中序遍历==》左子树,根结点,右子树;

后续遍历==》左子树,右子树,根结点;

按照其递归的思想,子树的遍历也是按照这一顺序来进行遍历的。

例子(以先序遍历为例):

有如下二叉树图1

按照先序遍历==》根结点,左子树,右子树;

   先不管左右子树的确切顺序,整个左/右子树的相对顺序是确定的。

中序遍历、后序遍历同理;树的遍历同理。

二、真题分析

896-2015年选择题第5题:

如果一棵树的先根遍历序列为ABCDE,后根遍历序列为BDCEA,则这课树的根节点的孩子结点树目为()。

解题思路:

2.1 思路1

利用树和二叉树的对应关系。树的先序和后续对应二叉树的先序和中序。二叉树的是先序和中序是可以唯一获取到具体的二叉树的,二叉树再转换回树,最后可以知道根节点存在几个子节点;

2.2 思路2

本文重点解释另外一种方法,根据根节点及其子树的遍历顺序来进行确实根结点有几个孩子结点。

与上诉二叉树所述一样,树的先序遍历、中序遍历和后续遍历如下,

先序遍历==》根结点,子树1,子树2,子树3,…,子树x;

中序遍历==》子树1,子树2,子树3,…子树j,根结点,子树j+1…子树x;

后续遍历==》子树1,子树2,子树3,…,子树x,根结点;

根据该题目中,可以知道

先序为:A,子树1,子树2,…,子树x

后序为:子树1,子树2,…,子树x,A

对于子树1来说,从先序来看,其根为B,从后序来看,子树1(以B为结尾)中只有B结点一个。对于子树2来说,从先序来看,其根为C,从后序来看,子树2中有DC两个结点。同理,子树三的根为E,存在E一个结点,综上所述,A结点有3个子树,也就有3个子结点。

 

三、总结

无论是二叉树,还是树,也可能是森林。其先序遍历,都是先遍历根节点,然后再依次先序遍历根结点的子树。体现到结果上是,根结点、第一棵子树、第二棵子树…。中序遍历和后序遍历同理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。