[入门必看]数据结构5.1:树的基本概念

news2024/9/9 0:16:31

[入门必看]数据结构5.1:树的基本概念


第五章 树与二叉树

小题考频:30
大题考频:8


5.1 树的基本概念

难度:☆☆

知识总览

5.1.1+5.1.2 树的定义和基本术语

在这里插入图片描述

5.1.3 树的性质


5.1.1+5.1.2 树的定义和基本术语

树的基本概念

自然界的树:
在这里插入图片描述
数据结构:
在这里插入图片描述
在这里插入图片描述

对于非空树:
有且只有一个根节点,只有根节点没有前驱;
没有后继的结点称为“叶子结点”;
有后继的结点称为“分支结点”
除了根节点外,任何一个结点都有且仅有一个前驱
每个结点可以有0个或多个后继。

在这里插入图片描述

这样的数据结构就不是树!
应该称为图或者是网,在下一章中学习。

树是n(n≥0)个结点的有限集合,n = 0时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:
1)有且仅有一个特定的称为的结点。
2)当n > 1时,其余结点可分为m(m > 0)个互不相交的有限集合 T 1 , T 2 , … , T m T_1, T_2,…, T_m T1,T2,,Tm,其中每个集合本身又是一棵树,并且称为根结点的子树
在这里插入图片描述

互不相交每个结点只有一个前驱是同一个意思。

所谓“子树”,又可以把他看作一个新的树。
比如说把左边这个树看做一个新树:
在这里插入图片描述

B就成了这个子树的根节点,同样的,可以把这棵树继续分别为两个不相交的子树。

右边的子树只有一个结点:
在这里插入图片描述

那么可以把这颗子树看做是一个根节点的同时,它的子树都是空树的这样的一个树。

可以看出树是一种递归定义的数据结构,任何一棵树都可以看作是由根节点和若干个不想交的子树所组成的。


树形逻辑结构的应用

Eg1. 行政区划分
在这里插入图片描述
Eg2. 文件系统
在这里插入图片描述
Eg3. 思维导图
在这里插入图片描述


结点之间的关系描述

结点之间的关系描述来自于,家谱。
在这里插入图片描述
接下来看这几个术语:
在这里插入图片描述

  • 祖先结点:从一个结点出发往上走,直到根节点为止,路上经过的所有结点都是这个结点的祖先结点。
    ——对于“你“”来说:是【父亲、爷爷】

  • 子孙结点:从一个结点出发,分支下面的所有结点都是这个结点的子孙结点。
    ——对于“爷爷”来说:是【下面的所有结点】

  • 双亲结点(父节点):一个结点的直接前驱就是它的父节点。
    ——对于“你”来说:是【父亲】

  • 孩子结点:一个结点的直接后继就是它的孩子节点。
    ——对于“父亲”来说:是【你】

  • 兄弟结点:同一双亲结点的子结点之间互为兄弟结点。
    ——对于“父亲”来说:是【二叔、三叔】
    ——对于“你”来说:是【F】

  • 堂兄弟结点:双亲在同一层的结点互为堂兄弟结点的祖先。
    ——对于“你”来说:是【G、H、I、J】

    一般来说,【F】结点会被描述为“你”的兄弟结点,而不称为堂兄弟结点。
    如果说,A是B的堂兄弟,那么意思就是【A和B结点在同一层】

  • 两个结点之间的路径:树里面描述两个结点之间的路径的时候,这个路径是单向的【只能从上往下】。

    树里面的边是有向的边,只能从上往下走。
    可以说“爷爷结点”到“你结点”是有路径的。

  • 路径长度:指这个路径经过了几条边

    因为结点只能从上往下,所以说“你结点”到“G结点”是没有路径的。


结点、树的属性描述

在这里插入图片描述
属性:

  • 结点的层次(深度):从上往下数【默认从1开始】

    A在第1层,BCD在第2层,EF这些在第3层,以此类推,越往下 层数越深。
    从第0层开始计算的话灵活运用。

  • 结点的高度:从下往上数

    KLM高度是1,EF这些在第2层,以此类推,越往上 高度越高。

  • 树的高度(深度):总共多少层

    这棵树的高度就是4

  • 结点的度:有几个孩子(分支)

    C结点只有一个分支,度为1;
    B结点有两个分支,度为2;
    M结点没有分支,度为0;

    非叶子结点(分支节点)的度 > 0
    叶子结点的度 = 0

  • 树的度:各结点的度的最大值

    这棵树的度就是3


有序树 V.S 无序树

在这里插入图片描述

有序树——逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
无序树——逻辑上看,树中结点的各子树从左至右是无次序的,可以互换
具体看你用树存什么,是否需要用结点的左右位置反映某些逻辑关系
 
家谱的顺序是从左到右排列的,结点次序交换会导致含义发生错误。
行政区划分的排序无所谓,为无序树


树 V.S 森林

森林。森林是 m ( m > 0 ) m(m>0) m(m0)棵互不相交的树的集合
Eg. 全中国所有人家的家谱
在这里插入图片描述

左边这几棵树就可以组成一个森林。
如果把这几棵树都连上同一个根节点的话,那这个森林就变成了一棵树。

树可以有0个结点,即允许有空树的特殊状态;
同样的,森林也可以有0棵树,即m可为0,就是空森林。


5.1.3 树的性质

常见考点1:结点数 = 总度数 + 1

常见考点1:结点数 = 总度数 + 1
结点的度——结点有几个孩子(分支)

在这里插入图片描述

除了根节点,每一个分支下面都会连一个孩子

常见考点2:度为m的树、m叉树的区别

常见考点2:度为m的树、m叉树的区别
在这里插入图片描述

树的度:树里面各个结点的度的最大值
m叉树:每一个结点最多只能有m个孩子的树

Eg.
在这里插入图片描述

度为3的树,意味着至少有一个结点,其度为3;
一定是非空树,因为要保证其有一个结点中有m个孩子。
其至少有m+1个结点,m个孩子+1个根节点。
 
3叉树,指每个结点最多有3个孩子,如果树所有的结点都小于3,其依然是一个合法的三叉树。
m叉空树,也是允许存在的。

常见考点3:度为m的树和m叉树的结点数

常见考点3:
度为m的树第i层至多有 M i − 1 M^{i-1} Mi1 个结点(i≥1)

也可以说m叉树第i层至多有 M i − 1 M^{i-1} Mi1 个结点(i≥1)
在这里插入图片描述

第一层根节点,1个;
第二层最多每一个有三个,3^1个;
第三层最多每一个有三个,3^2个;

常见考点4:高度为h的m叉树至多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点。

常见考点4:高度为h的m叉树至多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点。
之前已经算出了每一层有多少个结点,将前h层全部加起来就是结果。
在这里插入图片描述
等比数列求和公式:
a + a q + a q 2 + ⋯ + a q n − 1 = a ( 1 − q n ) 1 − q a+aq+aq^2+\cdots +aq^{n-1}=\frac{a\left( 1-q^n \right)}{1-q} a+aq+aq2++aqn1=1qa(1qn)

那么最少有多少个结点呢?

常见考点5:高度为h的m叉树和度为m的树至少有几个结点?

常见考点5:
高度为h的m叉树至少有h个结点。
高度为h、度为m的树至少有h+m-1个结点。
在这里插入图片描述

对于m叉树,只规定了每一个结点的孩子数量上限是多少,并没有规定其下限。
节点数最少的情况应该是从根结点一直往下,每个结点都只有一个孩子的情况。

对于度为m的树来说,至少要保证有一个结点有m个孩子,所以至少要有h+m-1个结点。


常见考点6:具有n个结点的m叉树的最小高度为 ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ \lceil \log _m\left( n\left( m-1 \right) +1 \right) \rceil logm(n(m1)+1)

常见考点6:具有n个结点的m叉树的最小高度为 ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ \lceil \log _m\left( n\left( m-1 \right) +1 \right) \rceil logm(n(m1)+1)

⌈ Δ ⌉ \lceil\Delta\rceil Δ该符号为向上取整

高度最小的情况——所有结点都有m个孩子
在这里插入图片描述

高度最小,就需要保证每一个结点都有尽可能多的孩子,即m个孩子。
树就会长得更宽,高度更小。

假设这个树的最小高度是h,高度为h的m叉树至多有 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点。
假设n个结点至少有h层,那么n的数量肯定要大于h-1层树的上限(h-1的MAX),同时要小于等于h层树的上限(h的MAX):
在这里插入图片描述
进行数学推导,乘(m-1),取对数,解出h的值:
在这里插入图片描述


知识回顾与重要考点

5.1.1+5.1.2 树的定义和基本术语

在这里插入图片描述

  • 子树的概念:树中每个集合本身又是一棵树,并且称为根结点的子树
  • 结点之间的路径:只能从上往下走
  • 结点的度:结点的分支数
  • 树的度:树中各结点的度的最大值

5.1.3 树的性质

在这里插入图片描述

  • 注意度为m的树和m叉树之间的区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445622.html

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

相关文章

软考 软件设计师上午题uml

UML uml事物依赖关系关联聚合组合关系泛化关系实现关系关联多重度UML类图UML 类图的概念对象图用例图包含关系扩展关系泛化关系用例图概念交互图通信图![在这里插入图片描述](https://img-blog.csdnimg.cn/d62c6f00d57a48949e3306461f3fbe25.png)通信图例子状态图状态图的状态和…

# 生成器

生成器 生成器是什么? 生成器(generator)是一种用来生成数据的对象。它们是普通函数的一种特殊形式,可以用来控制数据的生成过程。 生成器有什么优势? 使用生成器的优势在于它们可以在生成数据的同时控制数据的生成过程…

android ContentObserver实时监测媒体图片增删改,java(1)

android ContentObserver实时监测媒体图片增删改,java&#xff08;1&#xff09; <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name"android.permission.READ_MEDIA_IMAGES" /> impl…

七、JS07使用 jQuery 操作 DOM

七、使用 jQuery 操作 DOM 7.1 DOM 操作 7.1.1 DOM 操作分类 使用 JavaScript 操作 DOM 时分为三类——DOM Core(核心)、HTML-DOM 和 CSS-DOMjQuery 操作也同样分为这三类下面主要回顾以下 JavaScript 中的 DOM 操作 JavaScript 中的 getElementById()、getElementByTagName…

c++内联函数inline

目录 内联函数的概念&#xff1a; 内联函数的用法&#xff1a; 内联的优点&#xff1a; 内联的缺点&#xff1a; 内联的使用场景 内联注意事项&#xff1a; 内联函数的概念&#xff1a; C中内联&#xff08;inline&#xff09;是一种关键字&#xff0c;用于告诉编译器把函…

以太网和DNS

以太网 数据链路层考虑的是相邻俩个节点之间的传输(通过网线/光纤/无线直接相连的设备),数据链路层中最典型的协议就说"以太网" 以太网协议规定了数据链路层,也规定了物理层的内容,我们使用的网线,也叫做"以太网线"(遵守以太网协议的网线) 以太网帧格式…

使用RecyclerView开发TabView

github链接 demo代码 效果图 这个功能是使用RecyclerView开发的&#xff0c;需要解决下面这些问题 单个item滚动的问题&#xff1a;左边的view需要固定、手指松开之后&#xff0c;惯性的处理滑动布局子View事件分发冲突的解决多个item联合滚动滚动header解决itemView与Recycl…

【MYSQL】表的增删改查(进阶)

文章目录 &#x1f337; 1. 数据库约束⭐ 1.1 约束类型⭐ 1.2 NULL约束⭐ 1.3 UNIQUE&#xff1a;唯一约束⭐ 1.4 DEFAULT&#xff1a;默认值约束⭐ 1.5 PRIMARY KEY&#xff1a;主键约束⭐ 1.6 FOREIGN KEY&#xff1a;外键约束⭐ 1.7 CHECK约束&#xff08;了解&#xff09; …

实在智能创意沙画引爆第25届“海博会”,数字员工为电商超自动化转型加“数”

4月18日&#xff0c;由中国纺织工业联合会、中国服装协会、中国服装设计师协会、台湾纺织业拓展会主办&#xff0c;石狮市人民政府指导的第二十五届海峡两岸纺织服装博览会暨科技成果交易会&#xff08;下称“海博会”&#xff09;在石狮市举行。本届海博会以“融合创新、共享时…

Android Jetpack 应用指南 - Navigation

前言 在Android开发的过去几年中&#xff0c;在公司的项目中一直没有机会尝试单Activity多Fragment的开发模式&#xff0c;随着Google推出Navigation组件&#xff0c;我意识到&#xff0c;终于有机会学习一种全新的开发模式了。 与上一篇文章相同&#xff0c;本篇同样是Navig…

Lenovo IdeaPad S540-14IML 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板Lenovo IdeaPad S540-14IML 2019 (Type 81NF) 处理器Intel Core i5-10210U / i7-10510U已驱动 内存Internal 4GB 2666 Changeable 8GB 2666 memo…

Android进程间通信

在操作系统中&#xff0c;每个进程都有一块独立的内存空间。为了保证程序的的安全性&#xff0c;操作系统都会有一套严格的安全机制来禁止进程间的非法访问&#xff0c;但是&#xff0c;很多情况下进程间也是需要相互通信的 进程间通信&#xff08;Inter-process communication…

嵌入式学习笔记——SPI通信的应用

SPI通信的应用 前言屏幕分类1.3OLED概述驱动芯片框图原理图通信时序显示的方式页地址、列地址初始化指令 程序设计初始化代码初始化写数据与写命令清屏函数 初始化代码字符显示函数 总结 前言 上一篇中介绍了STM32的SPI通信&#xff0c;并根据框图和寄存器进行了SPI通信的初始…

轻松掌握k8s(使用docker)安装知识点

1、介绍 kubernetes具有以下特性&#xff1a; 服务发现和负载均衡 Kubernetes 可以使用 DNS 名称或自己的 IP 地址公开容器&#xff0c;如果进入容器的流量很大&#xff0c; Kubernetes 可以负载均衡并分配网络流量&#xff0c;从而使部署稳定。存储编排 Kubernetes 允许你自…

【数据库】— 无损连接、Chase算法、保持函数依赖

【数据库】— 无损连接、Chase算法 Chase算法Chase算法举例一种简便方法&#xff1a;分解为两个模式时无损连接和函数依赖的一个简单例子 Chase算法 形式化定义&#xff1a; 构造一个 k k k行 n n n列的表格&#xff0c;每行对应一个模式 R i ( 1 ≤ i ≤ k ) Ri (1≤i ≤ k)…

计算机组成原理汇总

提示&#xff1a;日落归山海&#xff0c;山海藏深情 文章目录 1.1 计算机的发展1.2 计算机硬件的基本组成1.3 计算机的性能指标2.1.1 进位计数制2.1.2 BCD码2.1.3 无符号整数的表示和运算2.1.4 带符号整数的表示和运算(原反补)2.1.5原反补码的特性对比2.1.6 移码2.1.7 定点小数…

【逗老师的无线电】骚活,GPS热点盒子自动上报APRS位置

逗老师最近整了个有意思的小活&#xff0c;组装了一个有4G网卡带GPS功能的热点盒子&#xff0c;让盒子基于GPS位置信息&#xff0c;自动上报APRS位置帧 全篇亮点 基于GPS和AGPS共同定位基于TCP直接上报APRS数据帧 别说&#xff0c;这小活整完之后&#xff0c;还是有点意思的&…

linux coredump

文章目录 是什么生成原理coredump 的“危害” reference: 一文读懂Coredump文件是如何生成的 GDB是什么&#xff1f; 是什么 简单的讲&#xff1a;当进程接收到某些信号而导致异常退出时&#xff0c;就会生成 coredump 文件 在程序发生某些错误而导致进程异常退出时&#x…

技术分析内核并发消杀器(KCSAN)一文解决!

一、KCSAN介绍 KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器&#xff0c;它依赖于编译时插装&#xff0c;并使用基于观察点的采样方法来检测竞态&#xff0c;其主要目的是检测数据竞争。 KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race…

亿发软件:中大型仓库进出货管理系统解决方案,定制软件让仓储作业高效便捷

中大型仓库出入库管理是传统厂家供应链管理流程的重要部分&#xff0c;直接关乎货物在仓库当中存储的安全&#xff0c;和员工工作的效率。一旦仓库管理当中出现了疏漏&#xff0c;那么货物的信息数据就会发生变动&#xff0c;导致实际与账目不符。人工带来的低效与不可控是传统…