做网站哪个行业比较有前景/郑州seo排名哪有

做网站哪个行业比较有前景,郑州seo排名哪有,博客,信宜网站建设408答疑 文章目录 二、树、森林树的基本概念树的定义和特性树的定义树的特性 基本术语树的基本术语和概念祖先、子孙、双亲、孩子、兄弟和堂兄弟结点的层次、度、深度和高度树的度和高度分支结点和叶结点有序树和无序树路径和路径长度 森林的基本术语和概念森林的定义森林与树的…

408答疑


文章目录

  • 二、树、森林
    • 树的基本概念
      • 树的定义和特性
        • 树的定义
        • 树的特性
      • 基本术语
        • 树的基本术语和概念
          • 祖先、子孙、双亲、孩子、兄弟和堂兄弟
          • 结点的层次、度、深度和高度
          • 树的度和高度
          • 分支结点和叶结点
          • 有序树和无序树
          • 路径和路径长度
        • 森林的基本术语和概念
          • 森林的定义
          • 森林与树的关系
      • 树的性质
        • 总结
    • 树的存储结构
      • 概述
      • 双亲表示法
        • 注意事项
      • 孩子表示法和孩子兄弟表示法
        • 孩子表示法
        • 孩子兄弟表示法
        • 存储结构选择
    • 树、森林与二叉树的转换
      • 树转为二叉树
        • 转换规则
        • 转换方法
        • 转换性质
        • 转换示例
      • 森林转为二叉树
        • 转换方法
        • 二叉树转换为森林
    • 树和森林的遍历
      • 树的遍历
        • 遍历定义
          • 先根遍历
          • 后根遍历
        • 遍历序列
      • 森林的遍历
        • 先序遍历森林
        • 中序遍历森林
      • 森林与二叉树遍历方法的对应关系
        • 下表树和森林的遍历与二叉树遍历的对应关系
        • 注意事项
  • 四、参考资料
    • 鲍鱼科技课件
    • 26王道考研书


二、树、森林

树的基本概念

树的定义和特性

树的定义

树是一个递归的概念,由 n ( n ≥ 0 ) n (n \geq 0) n(n0) 个结点的有限集组成。当 n = 0 n=0 n=0 时,称为空树。在任意一棵非空树中应满足:

  1. 有且仅有一个特定的称为根的结点。
  2. 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, \cdots, T_m T1,T2,,Tm,其中每个集合本身又是一棵树,并且称为根的子树。
树的特性

树作为逻辑结构,同时也是一种分层结构,具有以下两个特点:

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

树适用于表示具有层次结构的数据。树中的某个结点(除根结点外)最多只和上一层的一个结点(其父结点)有直接关系,根结点没有直接上层结点,因此在 n n n 个结点的树中有 n − 1 n-1 n1 条边。而树中每个结点与其下一层的零个或多个结点(其孩子结点)都有直接关系。

基本术语

树的基本术语和概念

在这里插入图片描述

祖先、子孙、双亲、孩子、兄弟和堂兄弟
  • 祖先:从根结点到某一结点的唯一路径上的所有其他结点。
    • 结点 K K K的祖先是从根 A A A K K K的唯一路径上的所有其他结点。
  • 子孙:某一结点的子树中所有结点。
    • 如结点 B B B K K K的祖先,而 K K K B B B的子孙,结点 B B B的子孙包括 E , F , K , L E, F, K, L E,F,K,L
  • 双亲:某一结点的直接前驱,即指向该结点的结点。
  • 孩子:某一结点的直接后继,即该结点指向的结点。
    • 路径上最接近 K K K的结点 E E E称为 K K K的双亲, K K K E E E的孩子。
  • 兄弟:有相同双亲的结点。
  • 堂兄弟:在同一层的结点互为堂兄弟。
    • 有相同双亲的结点称为兄弟(如 K K K L L L)。
    • 双亲在同一层的结点互为堂兄弟(如 G G G E E E F F F H H H I I I J J J)。
  • A A A是树中唯一没有双亲的结点。
结点的层次、度、深度和高度
  • 层次:从树根开始定义,根结点为第1层,它的孩子为第2层,以此类推。
  • 结点的度:一个结点的孩子个数称为该结点的度。
    • 如结点 B B B的度为2,结点 D D D的度为3。
  • 深度:结点所在的层次。
  • 高度:以该结点为根的子树的高度。
树的度和高度
  • 树的度:树中结点的最大度数称为树的度。
    • 上图中树的度为3。
  • 树的高度:树的高度(或深度)是树中结点的最大层数。
    • 上图中树的高度为4。
分支结点和叶结点
  • 分支结点:度大于0的结点称为分支结点(也称非终端结点)。
  • 叶结点:度为0(没有孩子结点)的结点称为叶结点(也称终端结点)。
有序树和无序树
  • 有序树:树中结点的各子树从左到右是有次序的,不能互换。
  • 无序树:树中结点的各子树从左到右没有次序,可以互换。
    • 假设上图为有序树,若将子结点位置互换,则变成一棵不同的树。
路径和路径长度
  • 路径:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的。
    • 因为树中的分支是有向的,即从双亲指向孩子,所以树中的路径是从上向下的,同一双亲的两个孩子之间不存在路径。
  • 路径长度:路径上所经过的边的个数。
森林的基本术语和概念
森林的定义
  • 森林:是 m ( m ≥ 0 ) m (m \geq 0) m(m0) 棵互不相交的树的集合。
森林与树的关系
  • 森林的概念与树的概念十分相近,因为只要把树的根结点删去就成了森林。反之,只要给 m m m 棵独立的树加上一个结点,并把这 m m m 棵树作为该结点的子树,则森林就变成了树。

树的性质

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

    • 结点的度数是指该结点的孩子数量,每个结点与其每个孩子都由唯一的边相连,因此树中所有结点的度数之和等于树中的边数之和。
    • 树中的结点(除根外)都有唯一的双亲,因此结点数 n n n 等于边数之和加1,即所有结点的度数之和加1。
  2. 度为 m m m 的树中第 i i i 层上至多有 m i − 1 m^{i-1} mi1 个结点 ( i ≥ 1 i \geq 1 i1)。

    • 第1层至多有1个结点(根结点),第2层至多有 m m m 个结点,第3层至多有 m 2 m^2 m2 个结点,以此类推。
    • 使用数学归纳法可推出第 i i i 层至多有 m i − 1 m^{i-1} mi1 个结点。
  3. 高度为 h h h m m m 叉树至多有 m h − 1 m − 1 \frac{m^h - 1}{m - 1} m1mh1 个结点。

    • 当各层结点数达到最大时,树中至多有 1 + m + m 2 + ⋯ + m h − 1 = m h − 1 m − 1 1 + m + m^2 + \cdots + m^{h-1} = \frac{m^h - 1}{m - 1} 1+m+m2++mh1=m1mh1 个结点。
  4. 度为 m m m、具有 n n n 个结点的树的最小高度 h h h ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ \lceil \log_m(n(m-1)+1) \rceil logm(n(m1)+1)⌉

    • 为使树的高度最小,在前 h − 1 h-1 h1 层中,每层的结点数都要达到最大,前 h − 1 h-1 h1 层最多有 ( m h − 1 − 1 ) ( m − 1 ) \frac{(m^{h-1} - 1)}{(m-1)} (m1)(mh11) 个结点,前 h h h 层最多有 ( m h − 1 ) ( m − 1 ) \frac{(m^h - 1)}{(m-1)} (m1)(mh1) 个结点。
    • 因此 ( m h − 1 − 1 ) ( m − 1 ) < n ≤ ( m h − 1 ) ( m − 1 ) \frac{(m^{h-1} - 1)}{(m-1)} < n \leq \frac{(m^h - 1)}{(m-1)} (m1)(mh11)<n(m1)(mh1),即 h − 1 < log ⁡ m ( n ( m − 1 ) + 1 ) ≤ h h-1 < \log_m(n(m-1)+1) \leq h h1<logm(n(m1)+1)h,解得 h min = ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ h_{\text{min}} = \lceil \log_m(n(m-1)+1) \rceil hmin=logm(n(m1)+1)⌉
  5. 度为 m m m、具有 n n n 个结点的树的最大高度 h h h n − m + 1 n-m+1 nm+1

    • 树的度为 m m m,因此至少有一个结点有 m m m 个孩子,它们处于同一层。
    • 为使树的高度最大,其他层可仅有一个结点,因此最大高度(层数)为 n − m + 1 n-m+1 nm+1
    • 由此,也可逆推出高度为 h h h、度为 m m m 的树至少有 h + m − 1 h+m-1 h+m1 个结点。
总结
  • 树中的结点数等于所有结点的度数之和加1。
  • 度为 m m m 的树中第 i i i 层上至多有 m i − 1 m^{i-1} mi1 个结点。
  • 高度为 h h h m m m 叉树至多有 m h − 1 m − 1 \frac{m^h - 1}{m - 1} m1mh1 个结点。
  • 具有 n n n 个结点的 m m m 叉树的最小高度为 ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ \lceil \log_m(n(m-1)+1) \rceil logm(n(m1)+1)⌉

树的存储结构

概述

树的存储方式有多种,既可采用顺序存储结构,又可采用链式存储结构,但无论采用何种存储方式,都要求能唯一地反映树中各结点之间的逻辑关系。这里介绍3种常用的存储结构。

双亲表示法

  • 定义:这种存储结构采用一组连续空间来存储每个结点,同时在每个结点中增设一个伪指针,指示其双亲结点在数组中的位置。
  • 特点:根结点下标为0,其伪指针域为-1。双亲表示法利用了每个结点(根结点除外)只有唯一双亲的性质,可以很快得到每个结点的双亲结点,但求结点的孩子时则需要遍历整个结构。
  • 图示:如下图所示,展示了树的双亲表示法及其指针图示。

在这里插入图片描述

注意事项
  • 顺序存储结构与链式存储结构:树的顺序存储结构中,数组下标代表结点的编号,下标中所存的内容指示了结点之间的关系。而在二叉树的顺序存储结构中,数组下标既代表了结点的编号,又指示了二叉树中各结点之间的关系。
  • 存储结构选择:二叉树属于树,因此二叉树也可用树的存储结构来存储,但树却不都能用二叉树的存储结构来存储。

孩子表示法和孩子兄弟表示法

孩子表示法
  • 定义:孩子表示法是将每个结点的孩子结点视为一个线性表,且以单链表作为存储结构,则 n n n 个结点就有 n n n 个孩子链表(叶结点的孩子链表为空表)。
  • 特点 n n n 个头指针又组成一个线性表,为便于查找,可采用顺序存储结构。
  • 图示:下图的是树的孩子表示法。

在这里插入图片描述

孩子兄弟表示法
  • 定义:孩子兄弟表示法也称二叉树表示法,即以二叉链表作为树的存储结构。每个结点包括三部分内容:结点值、指向结点第一个孩子结点的指针,以及指向结点下一个兄弟结点的指针(沿此域可以找到结点的所有兄弟结点)。
  • 图示:下图的是树的孩子兄弟表示法。
  • 优点:孩子兄弟表示法比较灵活,其最大的优点是可以方便地实现树转换为二叉树的操作,易于查找结点的孩子等,但缺点是从当前结点查找其双亲结点比较麻烦。

在这里插入图片描述

存储结构选择
  • 孩子表示法:寻找孩子的操作非常方便,而寻找双亲的操作则需要遍历 n n n 个结点中孩子链表指针域所指向的 n n n 个孩子链表。
  • 孩子兄弟表示法:若为每个结点增设一个 parent 域指向其父结点,则查找结点的父结点也很方便。

树、森林与二叉树的转换

树转为二叉树

转换规则

树转换为二叉树的规则是:每个结点的左指针指向它的第一个孩子,右指针指向它在树中的相邻右兄弟,这个规则又称为“左孩子右兄弟”。由于根结点没有兄弟,因此转换得到的二叉树没有右子树。

转换方法
  1. 在兄弟结点之间加一连线:将树中每个结点的兄弟结点通过连线连接起来。
  2. 保留第一个孩子的连线:对每个结点,只保留它与第一个孩子的连线,而与其他孩子的连线全部抹掉。
  3. 旋转树结构:以树根为轴心,顺时针旋转45°。
转换性质
  • 二叉树和树都可以用二叉链表作为存储结构。
  • 从物理结构上看,树的孩子兄弟表示法与二叉树的二叉链表表示法是相同的,因此可以用同一存储结构的不同解释将一棵树转换为二叉树。
转换示例

下图展示了树与二叉树的对应关系,通过上述转换规则和方法,可以将树转换为二叉树。

在这里插入图片描述

森林转为二叉树

将森林转换为二叉树的规则与树类似。先将森林中的每棵树转换为二叉树,由于任意一棵树对应的二叉树的右子树必空,森林中各棵树的根也可视为兄弟关系,将第二棵树对应的二叉树当作第一棵二叉树根的右子树……以此类推,就可以将森林转换为二叉树。

转换方法
  1. 将森林中的每棵树转换成相应的二叉树。
  2. 每棵树的根也可视为兄弟关系,在每棵树的根之间加一根连线。
  3. 以第一棵树的根为轴心顺时针旋转45°。
二叉树转换为森林

二叉树转换为森林的规则:若二叉树非空,则二叉树的根及其左子树为第一棵树的二叉树形式,所以将根的右链断开。二叉树根的右子树又可视为一个由除第一棵树外的森林转换后的二叉树,应用同样的方法,直到最后只剩一棵没有右子树的二叉树为止,最后将每棵二叉树依次转换成树,就得到了原森林。

二叉树转换为树或森林是唯一的。

在这里插入图片描述

树和森林的遍历

树的遍历

遍历定义

树的遍历是指用某种方式访问树中的每个结点,且仅访问一次。主要有两种方式:

先根遍历
  • 若树非空,先访问根结点。
  • 再依次遍历根结点的每棵子树,遍历子树时仍遵循先根后子树的规则。
  • 其遍历序列与这棵树相应二叉树的先序序列相同。
后根遍历
  • 若树非空,先依次遍历根结点的每棵子树,遍历子树时仍遵循先子树后根的规则。
  • 再访问根结点。
  • 其遍历序列与这棵树相应二叉树的中序序列相同。
遍历序列
  • 下图的树的先根遍历序列为 A B E F C D G ABEFCDG ABEFCDG,后根遍历序列为 E F B C G D A EFBCGDA EFBCGDA
  • 另外,树也有层次遍历,与二叉树的层次遍历思想基本相同,即按层序依次访问各结点。

在这里插入图片描述

森林的遍历

先序遍历森林

按照森林和树相互递归的定义,可得到森林的两种遍历方法。先序遍历森林的规则如下:

  1. 访问森林中第一棵树的根结点。
  2. 先序遍历第一棵树中根结点的子树森林。
  3. 先序遍历除去第一棵树之后剩余的树构成的森林。
中序遍历森林

中序遍历森林的规则如下:

  1. 中序遍历森林中第一棵树的根结点的子树森林。
  2. 访问第一棵树的根结点。
  3. 中序遍历除去第一棵树之后剩余的树构成的森林。
    下图的森林的先序遍历序列为 A B C D E F G H I J ABCDEFGHIJ ABCDEFGHIJ,中序遍历序列为 B C D A F E H I G BCDAFEHIG BCDAFEHIG

在这里插入图片描述

森林与二叉树遍历方法的对应关系

当森林转换成二叉树时,其第一棵树的子树森林转换成左子树,剩余树的森林转换成右子树,可知森林的先序和中序遍历即为其对应二叉树的先序和中序遍历。

下表树和森林的遍历与二叉树遍历的对应关系
森林二叉树
先根遍历先序遍历先序遍历
后根遍历中序遍历中序遍历
注意事项

部分教材也将森林的中序遍历称为后序遍历,称中序遍历是相对其二叉树而言的,称后序遍历是因为根确实是最后才访问的,若遇到这两种称谓,则可理解为同一种遍历方法。

四、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:
在这里插入图片描述

网课全程班:
在这里插入图片描述

26王道考研书

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

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

相关文章

【HarmonyOS Next之旅】DevEco Studio使用指南(六)

目录 1 -> 在模块中添加Ability 1.1 -> Stage模型添加UIAbility 1.1.1 -> 在模块中添加UIAbility 1.1.2 -> 在模块中添加Extension Ability 2 -> 创建服务卡片 2.1 -> 概述 2.2 -> 使用约束 2.3 -> 创建服务卡片 2.4 -> 创建动态/静态卡片…

Excel多级联动下拉菜单的自动化设置(使用Python中的openpyxl模块)

1 主要目的 在Excel中&#xff0c;经常会遇到需要制作多级联动下拉菜单的情况&#xff0c;要求单元格内填写的内容只能从指定的多个选项中进行选择&#xff0c;并且需要设置多级目录&#xff0c;其中下级目录的选项内容要根据上级目录的填写内容确定&#xff0c;如下图所示&am…

3.25-1 postman执行+弱网测试

1.导出json脚本 2.打包json文件 3.下载的文件 二 .导入脚本 选择文件 点击导入 导入的接口 三.多接口运行 &#xff08;1&#xff09;集合右键&#xff0c;点击run &#xff0c;运行多个接口 2.编辑环境&#xff0c;集合&#xff0c;执行次数等 运行多个接口 四.运行多个接口…

Pear Admin Flask 开发问题

下载代码请复制以下命令到终端执行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下载git 完成安装后&#xff1a; 安装 Git 后出现的页面是 “Git for Windows 的版本发布说明&#xff08;Release Notes&#xff09;”&#xff0c;通常会在安装完成后自动弹…

【C语言】文件操作(详解)

个人主页 今天我们来讲一下有关文件的相关操作&#xff0c;希望看完这篇文章对你有所帮助&#xff0c;大力感谢你对博主的支持&#xff01; 文章目录 ⭐一、为什么使用文件&#x1f389;二、什么是文件2.1 程序文件2.2 数据文件2.3 文件名 &#x1f3a1;三、二进制文件和文本…

基于web的家政服务网站

内容摘要 由于互联网的使用&#xff0c;人们在管理、应用、服务等领域使用数据更加简洁、方便&#xff0c;大大提高了工作效率。互联网正逐渐融入我们的生活&#xff0c;影响和改变我们的生活。 家政服务管理系统是典型的信息管理系统&#xff08;MIS&#xff09;。其开发主要…

【leetcode hot 100 739】每日温度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…

算法 | 麻雀搜索算法原理,公式,改进算法综述,应用场景及matlab完整代码

一、麻雀搜索算法(SSA)原理 1. 算法基础 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一种群体智能优化算法,灵感来源于麻雀群体的觅食与反捕食行为。算法将麻雀分为三类角色:发现者(Producer):适应度最高,负责探索全局最优区域;加入者(Follower)…

CAT1模块 EC800M HTTP 使用后续记录

记录一下 CAT1 模块EC800 HTTP 使用后续遇到的问题 by 矜辰所致目录 前言一、一些功能的完善1.1 新的交互指令添加1.2 连不上网络处理 二、问题出现三、分析及解决3.1 定位问题3.2 问题分析与解决3.2.1 查看变量在内存中的位置 3.3 数据类型说明3.3.1 常用格式化输出符号…

单纯形法之大M法

1. 问题背景与标准化 在求解某些线性规划问题时&#xff0c;往往难以直接找到初始的基本可行解。特别是当约束中存在等式或 “≥” 类型的不等式时&#xff0c;我们需要引入人工变量来构造一个初始可行解。 考虑如下标准形式问题&#xff08;假设为最大化问题&#xff09;&am…

Springboot集成Debezium监听postgresql变更

1.创建springboot项目引入pom <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.debezium</groupI…

报错 standard_init_linux.go:228: exec user process caused: exec format error

docker logs 容器名 报错&#xff1a; standard_init_linux.go:228: exec user process caused: exec format error 或者 standard_init_linux.go:228: exec user process caused: input/output error 排查思路 1、检查源镜像的框架是否正确&#xff0c;是否amd64&#x…

Go 代理爬虫

现在注册&#xff0c;还送15美金注册奖励金 --- 亮数据-网络IP代理及全网数据一站式服务商 使用代理服务器&#xff0c;通过 Colly、Goquery、Selenium 进行网络爬虫的基础示例程序 本仓库包含两个分支&#xff1a; basic 分支包含供 Go Proxy Servers 这篇文章改动的基础代码…

STM32实现智能温控系统(暖手宝):PID 算法 + DS18B20+OLED 显示,[学习 PID 优质项目]

一、项目概述 本文基于 STM32F103C8T6 单片机&#xff0c;设计了一个高精度温度控制系统。通过 DS18B20 采集温度&#xff0c;采用位置型 PID 算法控制 PWM 输出驱动 MOS 管加热Pi膜&#xff0c;配合 OLED 实时显示温度数据。系统可稳定将 PI 膜加热至 40℃&#xff0c;适用于…

从零开始:使用Luatools工具高效烧录Air780EPM核心板项目的完整指南

本文将深入讲解如何使用Luatools工具烧录一个具体的项目到Air780EPM开发板中。如何使用官方推荐的Luatools工具&#xff08;一款跨平台、命令行驱动的烧录利器&#xff09;&#xff0c;通过“环境配置→硬件连接→参数设置→一键烧录”四大步骤&#xff0c;帮助用户实现Air780E…

2024年认证杯SPSSPRO杯数学建模C题(第二阶段)云中的海盐全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…

大疆上云api介绍

概述 目前对于 DJI 无人机接入第三方云平台,主要是基于 MSDK 开发定制 App,然后自己定义私有上云通信协议连接到云平台中。这样对于核心业务是开发云平台,无人机只是其中一个接入硬件设备的开发者来说,重新基于 MSDK 开发 App 工作量大、成本高,同时还需要花很多精力在无人…

云原生之开源遥测框架OpenTelemetry(在 Gin 框架中使用 OpenTelemetry 进行分布式追踪和监控)

文章目录 云原生之开源遥测框架OpenTelemetry背景什么是可观测性&#xff1f; 什么是 OpenTelemetry&#xff1f;Opentelemetry的主要优势有以下几点&#xff1a;理解分布式链路日志Spans分布式链路 在 Gin 框架中使用 OpenTelemetry 进行分布式追踪和监控0. 整体思路1. 初始化…

2.(vue3.x+vite)使用vue-router

前端技术社区总目录(订阅之前请先查看该博客) 效果预览 路由配置的“/”与“helloWorld”都可以访问到以下内容 http://10.11.0.87:4000/#/ http://10.11.0.87:4000/#/helloWorld 1:安装vue-router npm i vue-router 2:创建router文件 在src的目录下创建router文件夹…

VUE3 路由配置

1.下载 VueRouter 模块 在命令行中输入 yarn add vue-router 2.导⼊相关函数 在自己创建的router/index.js 文件中 import { createRouter, createWebHashHistory } from vue-router 3.创建路由实例 在自己创建的router/index.js 文件中 const theFirstRouter ()>{return…