【C++算法竞赛 · 图论】树

ops/2024/11/8 14:18:45/

目录

前言

树的定义

树的相关概念

树的遍历

1 先序遍历

2 中序遍历

3 后序遍历 


前言

前两篇文章(【C++算法竞赛 · 图论图论基础、【C++算法竞赛 · 图论】图的存储)中,介绍了图的相关概念与存储,还不了解的可以去补补课。

这篇文章会介绍一种 特殊的图的形式:树 。话不多说,步入正题——

树的定义

顾名思义,树是一种长得很像现实中的树的图,只是它是倒过来的。请看此图: 

这就是一棵十分普通的树。

树的相关概念

  • 每一个数称为 节点 (node) 。
  • 作为所有其他节点的“起源”的节点称为 根节点(root),也就是图中的 0。
  • 如果 u 是 v 的上一个节点(例如 1 和 4),那么 u 是 v 的 父节点(parent node),v 是 u 的 子节点(child node)
  • 没有子节点的节点,也就是树的末端,称作 叶节点
  • 以某个节点为根节点的树被称作原来的树的 子树(subtree)
  • 多棵树的集合被称为 森林(forest)

树的遍历

按照某种次序来访问树中全部节点,这种操作叫做 树的遍历

树的遍历一般有三种方式:(BFS,DFS在之后的文章中讲哦)

1 先序遍历

先访问根节点,然后按照从左到右的顺序遍历各子树。

此图的先序遍历为:0 1 3 4 8 9 5 2 6 7

2 中序遍历

先访问左子树,然后访问根,最后访问右子树。

注意:这种方法仅限于二叉树!

此图的中序遍历为:6 1 7 5 8 0 3 2 9 4

3 后序遍历 

先从左到右访问子树,然后访问根节点。

此图的后序遍历为:3 8 9 4 5 1 6 7 2 0


这期内容不长(学生党作业多),主要是树的基础概念,之后会继续讲二叉树、BFS、DFS等内容,别急!

本篇文章就到这啦,别忘点赞收藏(求求了!)

下次见!


http://www.ppmy.cn/ops/24789.html

相关文章

消息队列相关汇总

目录 一、什么是消息队列 二、Kafka怎么避免重复消费 三、RabbitMQ 的消息如何实现路由 四、如何保证RabbitMQ的消息可靠传输 五、如何进⾏消息队列选型 一、什么是消息队列 消息队列 Message Queue,简称 MQ。是一种应用间的通信方式,主要由三个部分…

Python俄罗斯方块

文章目录 游戏实现思路1. 游戏元素的定义2. 游戏区域和状态的定义3. 游戏逻辑的实现4. 游戏界面的绘制5. 游戏事件的处理6. 游戏循环7. 完整实现代码 游戏实现思路 这个游戏的实现思路主要分为以下几个步骤: 1. 游戏元素的定义 Brick类:表示游戏中的砖…

tcp inflight 守恒算法的自动收敛

inflight 守恒算法看起来只描述理想情况,现实很难满足,是这样吗? 从 reno 到 bbr,无论哪个算法都在描述理想情况,以 reno 和 bbr 两个极端为例,它们分别描述两种理想管道,reno 将 buffer 从恰好…

【Spring】1.Spring中IOC与DI全解析

本节将详细介绍Spring框架的两个核心概念:控制反转(IOC)和依赖注入(DI)。首先,我们会探讨IOC和DI的定义,实现原理,优点和缺点。然后,我们将介绍如何在Spring中使用IOC和D…

《python编程从入门到实践》day16

昨日知识点回顾 从模块中导入类/模块 今日知识点学习 第十章 文件和异常 10.1 从文件中读取数据 10.1.1 读取整个文件 txt文件与程序文件在同一级目录 with open(pi_digits.txt) as file_object:contents file_object.read() print(contents)# 运行结果: # 3.1…

websocket全局封装使用

WebSocket对象的创建 WebSocket对象的关闭 启用心跳机制,避免断连 消息推送,接收到消息后进行业务逻辑处理 重连机制,如果断连后尝试一定次数的重连,超过最大次数后仍然失败则关闭连接 调用案例如下: const socketMana…

源码编译framework.jar 并成功导入android studio 开发

一、不同安卓版本对应路径 Android N/O: 7 和 8 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar Android P/Q: 9 和 10 out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar Android R: 11以上 out/so…

QT 开发COM(ActiveX)组件基础介绍和方案验证

一、COM简介 1.1 COM是什么? COM,Component Object Model,即组件对象模型,是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一种统一的方式进行交互。COM 既提供了组件之间进行交互的规范,也…