news 2026/4/22 8:05:22

第7章树和二叉树:树和森林的遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第7章树和二叉树:树和森林的遍历

7.10 树和森林的遍历

1. 树的遍历

由树结构的定义,可以引出两种次序遍历树的方法:

(1)先根(次序)遍历

先访问树的根结点,然后依次先根遍历根的每棵子树。

以图 7.10.1 所示的树为例,先根遍历,可得树的先根序列为:RADEBCFGHK

图 7.10.1 树

(2)后根(次序)遍历

先依次后根遍历每棵子树,然后访问根结点。

以图 7.10.1 所示的树为例,后根遍历,可得树的后根序列为:DEABGHKFCR

2. 森林的遍历

按照森林和树相互递归的定义,森林也有两种遍历方法

(1)先序遍历

若森林非空,按照下述规则遍历:

① 访问森林中第一棵树的根结点;

② 先序遍历第一棵树的根结点的子树森林;

③ 先序遍历除去第一棵树之后剩余的树构成的森林

如图 7.10.2 所示的森林,根据先序遍历,得到森林的先序序列为:ABCDEFGHIJ

图 7.10.2 森林

(2)中序遍历

若森林为空,则可按下述规则遍历:

① 中序遍历森林中第一棵树的根结点的子树森林;

② 访问第一棵树的根结点;

③ 中序遍历除去第一棵树之后剩余的树构成的森林。

如图 7.10.2 所示的森林,根据中序遍历,得到森林的中序序列为:BCDAFEHJIG

由森林与二叉树之间转换的规则可知,当森林转换成二叉树时,其第一棵树的子树森林转换成左子树,剩余树的森林转换成右子树,则上述森林的先序和中序遍历即为其对应的二叉树的先序和中序遍历。

将图 7.10.2 所示的森林转换为二叉树,如图 7.10.3 所示,对该二叉树分别进行先序和中序遍历,可得和上述相同的序列。

图 7.10.3 由森林转换的二叉树

当以二叉链表做树的存储结构时,树的先根遍历和后根遍历可借用二叉树的先序遍历和中序遍历的算法实现。

树、森林的遍历与二叉树的遍历的对应关系:

森林二叉树
先根遍历先序遍历先序遍历
后根遍历中序遍历中序遍历
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 22:11:54

`.flattened-pom.xml` 深度解析

🎯 问题背景 在 Maven 多模块项目中,你可能会看到项目根目录和各个子模块下都存在一个 .flattened-pom.xml 文件,这个文件是做什么的?能删除吗? 问题的本质 这个问题涉及到 Maven 的一个核心矛盾: 开发时的…

作者头像 李华
网站建设 2026/4/20 1:29:45

LangFlow镜像超时设置选项:防止长时间阻塞任务堆积

LangFlow镜像超时设置:防止长时间阻塞与任务堆积 在现代AI应用开发中,可视化工作流工具正变得越来越重要。LangFlow作为LangChain生态中的图形化利器,让开发者无需编写大量代码即可拖拽构建复杂的LLM流程。但便利的背后也潜藏风险——当某个节…

作者头像 李华
网站建设 2026/4/17 23:33:28

基于Python的肝癌医学影像分割模型校准系统

基于Python的肝癌医学影像分割模型校准系统 摘要 肝癌是全球范围内致死率极高的恶性肿瘤之一,准确的肝癌病灶分割对于诊断、治疗规划和预后评估至关重要。本文详细介绍了一个完整的肝癌医学影像分割模型校准系统,该系统利用现有数据和公开的肝癌分割模型,通过系统化的校准…

作者头像 李华
网站建设 2026/4/15 21:14:44

基于STM32的智能窗户窗帘晾衣架雨滴光照检测系统设计

一、设计背景与核心需求 在智能家居场景中,传统窗户、窗帘、晾衣架需人工操作,难以应对突发天气(如降雨)与光照变化,易导致衣物淋湿、室内光照不适等问题。基于STM32的智能检测控制系统,融合雨滴、光照传感…

作者头像 李华
网站建设 2026/4/19 13:52:15

LangFlow镜像审计日志:记录所有操作行为合规可查

LangFlow镜像审计日志:记录所有操作行为合规可查 在企业级AI应用日益复杂的今天,一个看似简单的“修改提示词”动作,可能背后牵连着安全、合规与责任界定的重大问题。尤其是在金融、医疗等强监管行业,任何对大模型工作流的变更都必…

作者头像 李华