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

目录

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:泊松分布的…

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;在计算机上安装产业园区智慧公寓管理系统软件来发挥其高效地信息处理的作用…

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

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

操作系统大题整理

专题一 程序代码题&#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;包括文本、图片等…

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

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

UE5.3 虚幻引擎 Windows插件开发打包(带源码插件打包、无源码插件打包)

0 引言 随着项目体量的增大&#xff0c;所有代码功能都放一起很难管理。所以有什么办法可以将大模块划分成一个个小模块吗。当然有&#xff0c;因为虚幻引擎本身就遇到过这个问题&#xff0c;他的解决办法就是使用插件的形式开发。 例如&#xff0c;一个团队开发了文件I/O模块插…

MySQL 的事务与多版本并发控制(MVCC)的那些事

什么是事务原子性:一致性隔离性 问题1: 为什么MySQL要使用mvcc实现隔离性而不使用 锁 解决并发问题?持久性 问题2: MySQL 不是磁盘数据库吗,持久化为什么是 redo log 保证的?问题 3: redo log 储存了什么东西,持久化(崩溃恢复是怎么做的?)问题 4 : MySQL 的 bing log (二进制…

多模态论文笔记——U-ViT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…

springboot实战纪实-课程介绍

教程介绍 Spring Boot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持&#xff0c;可以帮助开发者更轻松快捷地构建出企业级应用。 Spring Boot通过自动配置功能&#xff0c;降低了复杂性&#xff0c;同时支持…

BBP飞控板中的坐标系变换

一般飞控板中至少存在以下坐标系&#xff1a; 陀螺Gyro坐标系加速度计Acc坐标系磁强计Mag坐标系飞控板坐标系 在BBP飞控板采用的IMU为同时包含了陀螺&#xff08;Gyro&#xff09;及加速度计&#xff08;Acc&#xff09;的6轴传感器&#xff0c;故Gyro及Acc为同一坐标系。同时…