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

目录

前言

树的定义

树的相关概念

树的遍历

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.mzph.cn/news/830405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ETAS CP AUTOSAR工具链】RTE层基本概念与开发流程

本篇文章续接上篇文章【ETAS CP AUTOSAR工具链】基本概念与开发流程,继续按上篇文章描述的ETAS CP工具链进行开发的基本框架,讲述了“RTE集成与配置”这部分的基本概念与开发流程。 RTE(Runtime Environment)处于应用层与基础软件…

标贝语音识别技术在金融领域中的应用实例

随着语音识别技术与文本挖掘、自然语言处理等技术的不断融合,智能语音交互技术在金融领域中爆发了出巨大的应用潜力。标贝科技根据自身与金融领域合作的经验为大家梳理出以下几点智能语音识别技术在金融领域中的应用实例。 一、智能柜台服务 语音识别的主要功能就…

微PE制作系统重装以及w11详细安装教程windows11安装pe系统制作

1.在电脑上插入一个U盘(U盘的内存不小于8G),鼠标右击插入的【U盘】选择【格式化】。 2.文件系统选择【NTFS】,点击【开始】。 3.点击【确定】。 4.格式化完成,点击【确定】。 5.鼠标右击【PE工具箱V2.3】压缩包选…

unity项目《样板间展示》开发:菜单界面

unity项目《样板间展示》开发:菜单界面 前言UI菜单创建逻辑实现结语 前言 这是这个项目demo教程的最后一节,这节是菜单界面部分的创建 UI菜单创建 创建一个新的场景,在Scene文件中右键选择Create->Scene,创建新的场景 在场景…

【深耕 Python】Data Science with Python 数据科学(16)Scikit-learn机器学习(一)

写在前面 关于数据科学环境的建立,可以参考我的博客: 【深耕 Python】Data Science with Python 数据科学(1)环境搭建 往期数据科学博文: 【深耕 Python】Data Science with Python 数据科学(2&#xf…

unity3d使用3D WebView播放网页中的视频

Unity2021.3.35f1,硬件ESP32-Cam,3D WebView插件 1.新建工程,导入3D WebView for Winfows和3D WebView for Android 2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo 3.修改Canvas的Render Mode为Screen Space-Camera&am…

【C++】学习笔记——string_1

文章目录 四、模板初阶2. 类模板 五、STL简介1. 什么是STL2. STL的六大组件3. 如何学习STL 六、string类1. string类对象的容量操作 未完待续 四、模板初阶 2. 类模板 函数模板就是:模板 函数;类模板就是:模板 类。和函数模板用法基本相同…

Rust HashMap

一、HashMap是什么,怎么用 1、HashMap是什么 HashMap 也是 Rust 标准库中提供的集合类型,但是又与动态数组不同,HashMap 中存储的是一一映射的 KV 键值对,并提供了平均时间复杂度为 O(1) 的查询方法。 2、HashMap怎么用 &…

elementui的el-select+el-tree+el-input实现可搜索的下拉树组件

部分实现代码如下 <template> <div><el-selectv-model"item.TableName"placeholder"请选择":disabled"!item.disabled"visible-change"handleVisible"ref"TableName"><el-input placeholder"请输…

RustGUI学习(iced)之小部件(三):如何使用下拉列表pick_list?

前言 本专栏是学习Rust的GUI库iced的合集&#xff0c;将介绍iced涉及的各个小部件分别介绍&#xff0c;最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个&#xff0c;目前处于发展中&#xff08;即版本可能会改变&#xff09;&#xff0c;本专栏基于版本0.12.1. 概述…

el-tree动态设置是否全部展开属性,值已经改变,但是没有展开或折叠

项目场景&#xff1a;使用el-tree组件&#xff0c;搜索后动态设置数据全部展示 问题描述 el-tree动态设置是否全部展开属性&#xff0c;值已经改变&#xff0c;但是没有展开 <el-selectv-model"TableName"placeholder"请选择"><el-input placeho…

Objective-C大爆炸:从零到单例模式

oc学习笔记&#xff08;一&#xff09; 文章目录 oc学习笔记&#xff08;一&#xff09;oc与c语言的区别#import的用法foundation框架NSLog函数NSString类型符号的作用oc中的数据类型 类与对象概念&#xff1a; 创建第一个类类的定义类的实现类加载对象的产生和使用 self语法id…

最新springboot家乡特色推荐系统

采用技术 最新springboot家乡特色推荐系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能 系统首页 用户注册 文章分享 个人中心 管理员模…

经典文献阅读之--EarlyBird(用于BEV中多视图跟踪的早期融合)

0. 简介 多视角聚合技术有望克服多目标检测和跟踪中的遮挡和漏检问题。最近的多视角检测和三维物体检测方法通过将所有视角投影到地面平面上&#xff0c;并在鸟瞰图中进行检测&#xff0c;取得了巨大的性能提升。《EarlyBird: Early-Fusion for Multi-View Tracking in the Bi…

AtCoder Beginner Contest 351 A-F题解

比赛链接&#xff1a;https://atcoder.jp/contests/abc351比赛时间&#xff1a;2024 年 4 月 27 日 20:00-21:40 A题&#xff1a;The bottom of the ninth 标签&#xff1a;循环、模拟题意&#xff1a;给定 A A A队 9 9 9局的得分和 B B B队 8 8 8局的得分。求 B B B队的第 9…

面试经典150题——反转字符串中的单词

面试经典150题 day21 题目来源我的题解方法一 双指针方法二 库函数正则匹配方法三 自定义函数方法四 双端队列 题目来源 力扣每日一题&#xff1b;题序&#xff1a;151 我的题解 方法一 双指针 先将首尾的空格删除&#xff0c;然后使用两个指针从后往前遍历&#xff0c;end指…

strcpy,strncpy函数详解

strcpy函数 在C语言中&#xff0c;strcpy()函数用于将一个字符串复制到另一个字符串中。 函数原型如下&#xff1a; char *strcpy(char *destination, const char *source);参数解释&#xff1a; destination&#xff1a;目标字符串&#xff0c;将会被复制到。source&#…

(iFlyCode、FREEGPT、Copilot、AIPlus、稳定高效)分享好用的ChatGPT

目录 1、iFlyCode 2、FREEGPT 3、Microsoft Copilot: 你的日常 AI 助手 4、AIPlus

Ubuntu中常用的解/压缩命令

Ubuntu中常用的解/压缩命令 一、tar文件tar.tgz文件tar.gz文件tar.bz文件tar.bz2文件tar.Z文件 二、zip文件三、rar文件四、gz文件五、bz文件bz2文件 六、Z文件七、tgz文件八、lha文件 一、tar文件 解压&#xff1a;tar xvf FileName.tar 压缩&#xff1a;tar cvf FileName.ta…

Servlet(三个核心API介绍以及错误排查)【二】

文章目录 一、三个核心API1.1 HttpServlet【1】地位【2】方法 1.2 HttpServletRequest【1】地位【2】方法【3】关于构造请求 1.3 HttpServletResponse【1】地位【2】方法 四、涉及状态码的错误排查&#xff08;404……&#xff09;五、关于自定义数据 ---- body或query String …