数据结构—树的定义与性质

目录

1.树的定义

2.基本术语

3.树的性质


1.树的定义

 树是n(n≥0)个结点的有限集。

n=0时,称为空树。

(1)树有且只有一个特定的结点,称为根节点。

(2)当n>1时,其余结点可分为n(n>0)个互不相交的有限集T1,T2……Tm,其中每个集合本身又是一棵树,称为根的子树。

2.基本术语

1)祖先、子孙、双亲、孩子、兄弟和堂兄弟。

考虑结点K,从根A到结点K的唯一路径上的所有其他结点,称为结点K的祖先。如结点B是结点K的祖先,而K是B的子孙,结点8的子孙包括EFKL。路径上最接近结点K的结点E称为K的双亲,而K为E的孩子。根是树中唯一没有双亲的结点有相同双亲的结点称为兄弟,如结点K和结点L有相同的双亲E,即K和L为兄弟。双亲在同一层的结点互为堂兄弟,结点G与EFHLJ互为堂兄弟。

2)结点的度和树的度。

树中一个结点的孩子个数称该节点的度。树中结点的最大的度数称为树的度,如结点B的度为2,结点D的度为3,则树的度为3。

3)分支结点和叶结点。

度大于0的结点称为分支结点(又称非终端结点);度为0(没有孩子结点)的结点称为叶结点(又称终端结点)。在分支结点中,每个结点的分支数就是该结点的度。根节点度不为0,也被称为分支结点。


4)结点的深度、高度和层次。

结点的层次从树根开始定义,根结点为第1层,它的孩子为第2层,以此类推。结点的深度就是结点所在的层次。树的高度(或深度)是树中结点的最大层数。结点的高度是以该结点为根的子树的高度。图5.1中树的高度为 4。

5)有序树和无序树。

树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树。

3.树的性质

1)树的结点树n等于所有结点的度数之和加1。

结点的度是指该结点的孩子数量,每个结点与其每个孩子都由唯一的边相连,一次树中所有结点的度数之和等于树中的边数之和。树中的结点(除根外)都有唯一的双亲,因此结点数n等于边数之和加1,即所有结点的度数之和加1。

2)度为m的树中第i层上至多有m^(i-1)个结点(i≥1)。

第1层至多有1个结点(即根结点),第2层至多有m个结点,第3层至多有m^2个结点。使用数学归纳法可推出第i层至多有m^(i-1)个结点。

3)高度为h的m叉树至多有((m^h)-1)/(m-1)个结点。

当各层节点数达到最大时,树中至多有1+m+m^2+m^3+……m^(h-1) = (m^h)-1/(m-1)

4)度为 m、具有n个结点的树的最小高度h为logm(n(m-1)+1)(取上限,不满整取整数的上限)。

[logm(n(m-1)+1)读作log以m为底,(n(m-1)+1)的对数。

为使树的高度最小,在前h-1层中,每层的结点数都要达到最大,前h-1层最多有(m^(h-1)-1)/(m-1)个结点,前h层最多有((m^h)-1)/(m-1)个结点。因此(m^(h-1)-1)/(m-1)<n≤((m^h)-1)/(m-1),       即 h-1<logm(n(m-1)+1)≤h, 解得 h(min) =「logm(n(m-1)+ 1)。

注意区分表达式的括号范围,都是分子分母的形式,((m^h)-1)/(m-1)即m的h次方减1,除以m减1。

5)度为m、具有n个结点的树的最大高度h为n-m+1。

由于树的度为m,因此至少有一个结点有m个孩子,它们处于同一层。为使树的高度最大,其他层可仅有一个结点,因此最大高度(层数)为n-m+1。由此,也可逆推出度为h、度为m的树至少有h+m-1个结点。

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

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

相关文章

vue数据请求通用方案:axios的options都有哪些值

Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 Node.js 中。 在使用 Axios 发送请求时&#xff0c;可以通过传递一个配置对象来指定请求的各种选项。 以下是一些常用的 Axios 配置选项及其说明&#xff1a; 1.url: &#xff08;必需&#xff09;请求的 …

选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型

结构为类选择器 伪元素选择器 PxCook 盒子模型 (内外边距&#xff0c;边框&#xff09; 内外边距合并&#xff0c;塌陷问题 元素溢出 圆角 阴影: 模糊半径&#xff1a;越大越模糊&#xff0c;也就是越柔和 案例一&#xff1a;产品卡片 <!DOCTYPE html> <html lang&q…

ThinkPHP 8高效构建Web应用-控制器

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 控制器无须特…

模拟出一个三维表面生成表面点,计算体积,并处理边界点

python代码 生成表面点,计算体积,并处理边界点,最终模拟出一个三维表面。 步骤: 初始参数设置: initial_fixed_point:一个初始固定点的坐标。 slop_thre:坡度阈值。 v_thre:体积阈值。 slope_rad:将坡度从度转换为弧度。 step_size:步长。 lam_x, lam_y:泊松分布的…

DOM HTML

《DOM HTML》是一个关于HTML文档对象模型&#xff08;DOM&#xff09;的教程&#xff0c;旨在教授如何使用DOM访问和操作HTML文档。DOM是HTML和XML文档的编程接口&#xff0c;它定义了访问和操作HTML文档的标准方法。DOM以树结构表达HTML文档&#xff0c;这使得编程语言如JavaS…

Elasticsearch 入门教程

掌握Elasticsearch&#xff1a;从入门到入门 一、ES 背景1.1 ElasticSearch 的背景1.2 ElasticSearch 的应用场景 二、ES 简介2.1 ElasticSearch 简介2.2 ElasticSearch 的定义与特点2.3 ElasticSearch 与传统数据库的区别2.4 ElasticSearch 的优势和劣势 三、ES 的核心概念3.1…

Multisim更新:振幅调制器+解调器(含仿真程序+文档+原理图+PCB)

前言 继3年前设计的&#xff1a;Multisim&#xff1a;振幅调制器的设计&#xff08;含仿真程序文档原理图PCB&#xff09;&#xff0c;有读者表示已经不能满足新需求&#xff0c;需要加上新的解调器功能&#x1f602;&#x1f602;&#x1f602;&#xff0c;鸽了很久这里便安排…

区块链方向学习路线

学习路线图 下面是登链社区给出的区块链开发者的学习路线图 学习路线建议 对于一个区块链方向的学习者而言&#xff0c;首先要了解的是区块链理论知识&#xff0c;当你了解了区块链的理论知识之后&#xff0c;下面有三个方向来学习&#xff0c;可以通俗的理解为区块链方向的后…

springboot547产业园区智慧公寓管理系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装产业园区智慧公寓管理系统软件来发挥其高效地信息处理的作用…

使用 OpenAI 进行结构化标签提取的 Python 实现

使用 OpenAI 进行结构化标签提取的 Python 实现 1. 环境准备2. 加载环境变量3. 初始化 OpenAI 客户端4. 定义系统消息5. 实现标签提取函数6. 示例应用示例1&#xff1a;人事文档示例2&#xff1a;技术文档 7. 运行结果8. 总结 在现代的信息处理中&#xff0c;从文本中提取结构化…

【电源专题】为什么测试电源的SW波形上冲振荡之前的0V电位要先来个小的下降

在同步电源的开关节点SW波形测试中,你可能会发现周期性的SW波形在上升前的一小段时间时间内会有一个小小的下跌,这个下跌会低于0V。那么这个下跌是怎么来的呢? 如下所示为某降压转换器的SW开关节点波形: 其展开后可以看到在上升之前有20ns左右的时间,SW电压是下跌…

OneFlow和PyTorch在性能上有哪些区别?

OneFlow 和 PyTorch 在性能上的区别主要体现在以下几个方面&#xff1a; 本篇文章的目录 分布式训练性能 硬件利用率和显存优化 模型训练速度 OneFlow&#xff1a;默认采用静态图模式&#xff0c;在模型训练前会对计算图进行编译优化&#xff0c;能够减少运行时的开销&…

操作系统大题整理

专题一 程序代码题&#xff1a;程序设计与分析&#xff0c;主要考的是线程&#xff0c;多线程的并发&#xff1f; 大题第一问&#xff08;1&#xff09;操作系统的结构有哪几种常用的结构&#xff1f; 宏内核&#xff1a;宏内核是将操作系统的主要功能模块都集中在内核的一种结…

web安全常用靶场

这里写自定义目录标题 phpstydy2018pikachuxss-labs phpstydy2018 网盘地址 提取码: nxnw ‌phpStudy是一款专为PHP开发者设计的集成环境工具&#xff0c;主要用于简化PHP开发环境的搭建过程。‌ 它集成了Apache、MySQL、PHP等核心组件&#xff0c;用户只需进行一次性安装&a…

【yolov8自卸卡车-挖掘机-装载机检测】

yolov8自卸卡车-挖掘机-装载机检测 YOLOv8算法介绍数据集和模型下载数据集准备数据配置文件&#xff08;data.yaml&#xff09;安装依赖模型训练步骤 YOLOv8算法介绍 YOLOv8是You Only Look Once&#xff08;YOLO&#xff09;算法家族的最新版本&#xff0c;它是一种单阶段目标…

扩散模型论文概述(二):Google系列工作【学习笔记】

视频链接&#xff1a;扩散模型论文概述&#xff08;二&#xff09;&#xff1a;Google系列工作_哔哩哔哩_bilibili 本视频讲的是Google在图像生成的工作。 同样&#xff0c;第一张图片是神作&#xff0c;总结的太好了&#xff01; 在生成式AI的时代&#xff0c;OpenAI和Google不…

redis常用数据类型

在Redis中&#xff0c;有几种数据类型是非常常用且核心的&#xff0c;它们各自有着独特的应用场景和优势。 1. 字符串&#xff08;String&#xff09;&#xff1a; • 这是Redis中最基本、最常用的数据类型。 • 字符串可以是任何形式的二进制数据&#xff0c;包括文本、图片等…

【Go研究】Go语言脚本化的可行性——yaegi项目体验

0x01 背景——云计算中脚本化困境 作为云基础设施管理中&#xff0c;大量需要跟文件系统、容器等相关的操作&#xff0c;这些操作实现通常用脚本来实现。 现在探讨下&#xff0c;这些脚本为什么一定要用脚本语言来实现&#xff0c;以及目前实现中的常见的问题。 常见的两个场…

基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真&#xff0c;仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…

3218. 切蛋糕的最小总开销 I

3218. 切蛋糕的最小总开销 I 题目链接&#xff1a;3218. 切蛋糕的最小总开销 I 代码如下&#xff1a; class Solution { public:int minimumCost(int m, int n, vector<int>& horizontalCut, vector<int>& verticalCut){ranges::sort(horizontalCut);ra…