05-5.1.1~2 树的定义和基本术语

2024-06-15 06:04
文章标签 定义 基本 05 术语 5.1

本文主要是介绍05-5.1.1~2 树的定义和基本术语,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 👋 Hi, I’m @Beast Cheng
  • 👀 I’m interested in photography, hiking, landscape…
  • 🌱 I’m currently learning python, javascript, kotlin…
  • 📫 How to reach me --> 458290771@qq.com

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

基本概念

最初始的结点是根结点
结点和结点连接起来的线叫做
下面还有结点的的结点叫做分支结点
下面没有结点的结点叫做叶子结点
结点数为0的树叫做空树 ϕ \phi ϕ
与之对应的树叫做非空树

  • 有且只有一个根节点
  • 只有根结点没有前驱,其他的结点都能找到对应的前驱
  • 只有叶子结点没有后继,其他的结点都能找到对应的后继
  • 除了根结点外,任何一个结点都有且仅有一个前驱
  • 每个结点可以有0个或多个后继
    n > 1 n>1 n>1时,其余结点可分为 m ( m > 0 ) m(m>0) m(m>0)互不相交的有限集合 T 1 , T 2 , . . . , T m T_1,T_2,...,T_m T1,T2,...,Tm,其中每个集合本身又是一棵树,并且称为根结点的子树

基本术语

结点之间关系的描述

什么是祖先结点?

从当前结点往根结点出发,直到根结点为止,中间经过的所有结点,都是祖先结点

什么是子孙结点?

从当前结点出发,往下的分支都是它的子孙结点

什么是双亲结点(父结点)?

一个结点的直接前驱就是父结点

什么是孩子结点?

一个结点的直接后继

什么是兄弟结点?

一个结点的多个直接结点就是兄弟结点

什么是堂兄弟结点?

与当前结点同一级的,并且不是同一个父结点的结点,叫做堂兄弟结点

什么是两个结点之间的路径?

也就是两个结点之间的线,需要注意的是,这个路径只能是从上到下的

什么是路径长度?

经过几条边,长度就是多少

结点、树的属性描述

结点的层次(深度)——从上往下数(默认从0开始,但是要注意审题)
结点的高度——从下往上数
树的高度(深度)——总共有多少层
结点的度——有几个分支
树的度——各结点的度的最大值

有序树、无序树

有序树——逻辑上看,树中各结点的各子树从左至右是有次序的,不能互换
无序树——逻辑上看,树中各结点的各子树从左至右是无次序的,可以互换
具体看你用树存什么,是否需要用结点的左右位置反映某些逻辑关系,如果需要就用有序树

森林

森林—— m ( m > 0 ) m(m>0) m(m>0)棵互不相交的树的集合
m可以为0,也就是空森林

这篇关于05-5.1.1~2 树的定义和基本术语的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062621

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Django中的函数视图和类视图以及路由的定义方式

《Django中的函数视图和类视图以及路由的定义方式》Django视图分函数视图和类视图,前者用函数处理请求,后者继承View类定义方法,路由使用path()、re_path()或url(),通过in... 目录函数视图类视图路由总路由函数视图的路由类视图定义路由总结Django允许接收的请求方法http

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更