数据结构—基础知识(九):树和二叉树(a)

news2024/9/29 1:24:50

数据结构—基础知识(九):树和二叉树(a)

树的定义

(Tree)是n(n≥0)个结点的有限集,它或为空树(n=0);或为非空树,对于非空树T:

  1. 有且仅有一个称之为根的结点;
  2. 除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1,T2,T3,…Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。

显然,树的定义是递归的,即在树的定义中又用到了其自身,树是一种递归的数据结构,树作为一种逻辑结构,同时也是一种分层结构,具有有以下两个特点:

  1. 树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。
  2. 树中所有结点都可以有零个或多个后继。

树的基本术语

在这里插入图片描述

  1. 结点:树中的一个独立单元。包含一个数据元素及若干指向其子树的分支,如上图中的A、B、C、D等。(下面术语中均以上图为例来说明)
  2. 结点的度:结点拥有的子树数称为结点的度。例如,A的度为3,C的度为1,F的度为0。
  3. 树的度:树的度是树内各结点度的最大值。图所示的树的度为3。
  4. 叶子:度为0的结点称为叶子或终端结点。结点K、L、F、G、M、I、J都是树的叶子。
  5. 非终端结点:度不为0的结点称为非终端结点或分支结点。除根结点之外,非终端结点也称为内部结点。
  6. 双亲和孩子:结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。例如,B的双亲为A,B的孩子有E和 F。
  7. 兄弟:同一个双亲的孩子之间互称兄弟。例如,H、I和J互为兄弟。
  8. 祖先:从根到该结点所经分支上的所有结点。例如,M的祖先为A、D和H。
  9. 子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如B的子孙为E、K、L和 F。
  10. 层次:结点的层次从根开始定义起,根为第一层,根的孩子为第二层。树中任一结点的层次等于其双亲结点的层次加1。
  11. 堂兄弟:双亲在同一层的结点互为堂兄弟。例如,结点G与E、F、H、I、J互为堂兄弟。
  12. 树的深度:树中结点的最大层次称为树的深度或高度。图所示的树的深度为4。
  13. 有序树和无序树:如果将树中结点的各子树看看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。
  14. 路径和路径长度:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
  15. 森林:是m(m≥0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。由此,也可以用森林和树相互递归的定义来描述树。

树的性质

树具有如下最基本的性质:

  1. 树中的结点数等于所有结点的度数之和加1。
  2. 度为m的树中第i层上至多有m^(i-1)个结点(i≥1)。
  3. 高度为h的m叉树至多有(m^(h)-1)/(m-1)个结点;至少有h个结点。
  4. 具有n个结点的m叉树的最小高度为[logm (n(m-1)+1)]向上取整。

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

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

相关文章

JavaEE-SSM-订单管理-前端增删改功能实现

3.5 功能2&#xff1a;添加 从列表页面切换到添加页面 编写对应添加页面的路由 * {path: /orderAdd,name: 添加订单,component: () > import(../views/OrderAdd.vue)}编写添加功能 <template><div><table border"1"><tr><td>编…

innodb底层原理和MySQL日志机制

server层 1. 连接器 客户端连接数据库需要输入账号、密码。连接器进行校验账号密码以及权限。 2. 查询缓存 连接器连接以后&#xff0c;比如输入一个select语句&#xff0c;这时候第一步就会先根据sql语句作为key给查询缓存中查看这条sql有没有已经被查询过&#xff0c;如果…

wps word 文档里的空白空间太大了

wps word 文档里的空白空间太大了&#xff0c;如下图1 点击【页面】--->【页边距】&#xff0c;把左边、右边的页边距调为0厘米。如下图2 点击【视图】--->【显示比例】从75%改为页宽&#xff0c;页宽的意思是使页面的宽度与窗口的宽度一致。如下图3 图1

微信小程序请求被阻止 Provisional headers are shown

1. ssl证书问题&#xff08;证书不匹配服务器&#xff0c;证书没有&#xff09; 解决方案&#xff1a; a. 更改证书配置&#xff08;让版本匹配&#xff09;&#xff0c;或者替换证书. 参考&#xff1a; http服务&#xff08;nginx、apache&#xff09;停用不安全的…

蓝桥杯省赛无忧 排序 课件40 冒泡排序

01 冒泡排序的思想 02 冒泡排序的实现 03 例题讲解 #include <iostream> using namespace std; void bubbleSort(int arr[], int n) {for (int i 0; i < n-1; i) { for (int j 0; j < n-i-1; j) {if (arr[j] > arr[j1]) {int temp arr[j];arr[j] arr[j1…

SAP PO平台配置

多个系统分配 &#xff1a; XPATH : /p1:mt_ERP_ZSSF_HFM_001/sapClient SPACE : p1 http://lstech.com/erp/IF0523/ZSSF_HFM_001

Python中元祖的用法

元祖tuple(,) 元祖就是不可变的列表&#xff0c;元祖用()表示,元素与元素之间用逗号隔开,数据类型没有限制。 tu (科比,詹姆斯,乔丹) tu tuple(123) 小括号中有一个元素,有逗号就是元祖,没有就是它本身。 空的小括号就是元祖 索引和切片与列表和字符串相同 不可变指的是,…

C++-QT-QString -CString -string 互转

网上常用的函数在环境&#xff08;VS2022 ATL包含QT库的项目&#xff09;中转换不了。 1.QString 转String std::string str qstr.toStdString(); //不行 QString qstr "Hello, world!";//1. 将QString转换为std::string 不行 //std::string str qstr.toSt…

【高效开发工具系列】Intellj IDEA 2023.3 版本

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

中国品牌崛起,爱可声助听器在欧美市场崭露头角

近年来&#xff0c;随着中国经济的快速发展和消费者需求不断升级&#xff0c;国产品牌影响力逐渐提升&#xff0c;成为国际市场上的新宠。其中&#xff0c;国产品牌爱可声助听器凭借其技术创新&#xff0c;在欧美市场崭露头角。 爱可声助听器是一家专注于研发国产数字助听器芯…

antv/g6绘制数据流向图

antv/g6绘制数据流向图 前言接口模拟数据htmlts页面效果 前言 在业务开发中需要绘制数据流向图&#xff0c;由于echarts关系图的限制以及需求的特殊要求&#xff0c;转而使用antv/g6实现&#xff0c;本文以代码的方式实现数据流向需求以及节点分组,版本"antv/g6": “…

UCAS-AOD遥感旋转目标检测数据集——基于YOLOv8obb,map50已达96.7%

1.UCAS-AOD简介 1.1数据说明 遥感图像&#xff0c;又名高分辨率遥感图像。遥感图像的分类依据是根据成像的介质不同来进行分类的。UCAS-AOD (Zhu et al.&#xff0c;2015)用于飞机和汽车的检测&#xff0c;包含飞机与汽车2类样本以及一定数量的反例样本&#xff08;背景&…

【arthas诊断CPU和内存问题实战】thread -n 5 + cpu火焰图 +内存火焰图

通过线程信息分析CPU 1.查看线程信息 step1: 先查看哪个线程占比cpu最高 分析&#xff1a; 可与看出 SceneWorker占比最高&#xff0c;但是是哪个类中哪个方法则不是太清楚。 我们还需要去分析代码&#xff1a; step2.分析代码 1.AbstractSceneManager的 this.sceneWorke…

DES算法的局限性与改进需求

DES算法的局限性与改进需求 DES算法是一种对称加密算法&#xff0c;具有高度的安全性和可靠性。然而&#xff0c;随着计算机技术的发展&#xff0c;DES算法的密钥长度逐渐被攻击者攻破&#xff0c;安全性受到威胁。因此&#xff0c;对DES算法进行改进以提高安全性是必要的。 3…

数字创新巨头PLAN B KRYPTO ASSETS普兰资产管理

Schutz AI金融隐私匿名公链引领全球数字金融浪潮 随着摩根大通推出颠覆性的「IndexGPT」软件服务&#xff0c;AI在金融领域的发展愈发引人瞩目。而PLAN B KRYPTO ASSETS普兰资产管理公司正积极响应这一变革&#xff0c;推出的Schutz AI金融隐私匿名公链成为全球关注的焦点。 在…

java web mvc-06-play framework intro

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

Oracle2-Rollup和Cube用法

在Oracle的聚合函数中&#xff0c;会有按照维度统计的情况,比如上图按照job 和 deptno统计 sal的sum 但是也会遇到同时要求统计只按照job维度统计的情况&#xff0c;并且做到一张表里 1 union 来实现维度不一致 首先反应过来的是分两步查询&#xff0c;再讲结果union起来 s…

使用axios库创建实例的示例,(创建实例时,传入了一个配置对象)同时还包含了请求拦截器和响应拦截器

第一步&#xff1a; 在vue项目中src目录下创建utils>request.js 第二步&#xff1a; 在 request.js中&#xff0c;使用axios.create方法创建了一个名为request的axios实例&#xff08;设置基本配置信息&#xff09;通过request.interceptors.request.use方法添加了请求拦…

html页面练习——公司发展流程图

1.效果图 2.html <div class"center"><header><h1>发展历程</h1><h3>CONMPANY HISTORY</h3></header><main><div class"left"><div class"time1">2012.12</div><div cla…

WebRTC之服务器搭建

前言 在前面的WebRTC介绍中我们已经介绍了WebRTC的编译以及成功地把WebRTC在Android Studio中运行了起来&#xff0c;详情请猛击<WebRTC之Android编译> 《WebRTC导入Android Studio》 在后面的学习过程中&#xff0c;我们将进一步使用WebRTC实现Android端的实时通信对话…