408数据结构-树的基本概念与性质 自学知识点整理

news2024/11/24 11:47:03

树的定义

树是 n n n n ≥ 0 n≥0 n0)个结点的有限集。当 n = 0 n=0 n=0时,称为空树
任意一棵非空树应具有以下特性:

  1. 有且仅有一个特定的被称为的结点(根结点)。
  2. n > 1 n>1 n1时,其余结点可分为 m m m m > 0 m>0 m0)个互不相交的有限集 T 1 , T 2 , . . . , T m T_1, T_2, ... , T_m T1,T2,...,Tm,其中每个集合本身又是一棵树,称为根的子树

没有后继的结点称为“叶子结点”(或 叶结点/终端结点),有后继的结点称为“分支结点”(或 非终端结点)。

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

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

由此可推算出,结点数为 n n n的树中有 n − 1 n-1 n1条边。(边是连接起树中两个结点之间的“线”)

关于树的基本术语(图片来自王道书)

王道书第五章的图

  • 祖先结点:对某一个结点来说,从根结点到这个结点的唯一路径上的所有其它结点,都是这个结点的祖先。例如,对 K K K结点来说,从根结点 A A A K K K的唯一路径是 A → B → E → K A→B→E→K ABEK,则结点 A , B , E A, B, E A,B,E都是结点 K K K的祖先结点。(已经想起LCA了……
  • 子孙结点:对某一个结点来说,这个结点的所有后继结点,及其后继结点的后继,后继的后继的后继……直到叶结点,都是这个结点的子孙。例如,对 B B B结点来说,它的子孙包括 E , F , K , L E, F, K, L E,F,K,L结点。而对于根结点来说,整棵树除了它本身,所有结点都是其子孙。
  • 双亲结点(父结点)&孩子结点:对某一个结点来说,其直接前驱被称为它的双亲,其直接后继则被称为它的孩子。例如,结点 B B B是结点 E E E的双亲结点(父结点),而结点 E E E是结点 B B B的孩子结点。根结点是树中唯一没有双亲的结点。
  • 兄弟结点&堂兄弟结点:对两个结点,若其拥有同一个双亲结点,则这两个结点互称兄弟。双亲在同一层的结点则互为堂兄弟。例如,对结点 E E E,结点 F F F与其互为兄弟结点,而结点 G , H , I , J G, H, I, J G,H,I,J与其互为堂兄弟结点。
  • 结点的度和树的度:树中一个结点的孩子个数称为该结点的,树中结点的最大度数称为树的。例如结点 B B B的度为 2 2 2,结点 D D D的度为 3 3 3,这棵树的度为 3 3 3。(叶结点的度为 0 0 0
  • 结点的深度、高度和层次:结点的层次从树根开始定义,根结点为第 1 1 1层,它的孩子为第 2 2 2层,以此类推。结点的深度就是该结点所在的层次。树的高度(或深度)是树中结点的最大层数。结点的高度是以该结点为根的子树的高度。换而言之,对一个结点来说,其深度是从上往下数的第几层,而高度是从下往上数的第几层。例如,结点 B B B的层数与深度为 2 2 2,高度为 3 3 3。图中的这棵树高度为 4 4 4。深度一般默认从 1 1 1开始计算,但是某些题目中也可能从 0 0 0开始,需要特别注意一下。
  • 有序树与无序树:若树中结点的各子树从左到右都是有次序的,不能互换,则称该树为有序树,否则为无序树
  • 路径和路径长度:树中两个结点之间的路径是由这两个结点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。
    (注:因为树中的分支是有向的,即从双亲指向孩子,所以树中的路径是从上向下的,同一双亲的两个孩子之间不存在路径。也就是说,一个结点与其兄弟或堂兄弟结点及这些结点的子孙结点之间都不存在路径)
  • 森林:森林 m m m m ≥ 0 m≥0 m0)棵互不相交的树的集合,当 m = 0 m=0 m=0时称为空森林。森林的概念与树的概念十分相近,因为只要把树的根结点删去,其子树的集合就构成了一个森林。反之,只要给 m m m棵独立的树加上一个结点,并把这 m m m棵树作为该结点的子树,则森林就成了树。

树的性质相关

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

结点的度指的是该结点的孩子数量,而每个结点与其每个孩子都由唯一的边相连,因此树中所有结点的度数之和等于树中的边数之和。树中除了根结点以外的结点都有唯一的双亲结点,因此结点数 n n n等于边数之和再加 1 1 1,也就是树的总结点数等于总度数 + 1 +1 +1,加的这个“ 1 1 1”就是根结点。

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

度为 m m m的树:

  • 任意结点的度 ≤ m ≤m m(最多 m m m个孩子)
  • 至少有一个结点的度 = m =m =m(有 m m m个孩子)
  • 一定是非空树,至少有 m + 1 m+1 m+1个结点( 1 1 1个根结点 + m +m +m个叶结点)

m m m叉树:

  • 任意结点的度 ≤ m ≤m m(最多 m m m个孩子)
  • 允许所有结点的度都 < m <m m
  • 可以是空树

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

这句话等价于“ m m m叉树的第 i i i层至多有 m i − 1 m^{i-1} mi1个结点( i ≥ 1 i≥1 i1)”。
1 1 1层:有 m 0 = 1 m^0=1 m0=1个结点,根结点。
2 2 2层:有 m 1 = m m^1=m m1=m个结点,当根结点的度为 m m m时。
3 3 3层:有 m 2 m^2 m2个结点,当根结点的度为 m m m,并且根结点的每个孩子结点的度都为 m m m时。
……
以此类推,到第 i i i层时,这一层至多有 m i − 1 m^{i-1} mi1个结点。
(下图来自王道考研408数据结构课程视频 - 树的性质)
图片来自王道考研408数据结构课程视频

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

由“常见考点 3 3 3”可知,当各层结点数达到最大时,高度为 h h h m m m叉树第i层有 m i − 1 m^{i-1} mi1个结点,对其求和,有:

∑ i = 1 h m i − 1 = m 1 ( 1 − m h ) 1 − m = m h − 1 m − 1 , m 1 = 1 \sum\limits_{i=1}^{h}{{{m}^{i-1}}}=\frac{{{m}_{1}}\left( 1-{{m}^{h}} \right)}{1-m}=\frac{{{m}^{h}}-1}{m-1},{{m}_{1}}=1 i=1hmi1=1mm1(1mh)=m1mh1,m1=1

一个简单的等比数列求和问题。

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

高度为 h h h m m m叉树,至少有 h h h个结点,即每一层只有 1 1 1个结点。
而高度为 h h h的度为 m m m的树,至少有 h + m − 1 h+m-1 h+m1个结点,即除第一层的某一层有 m m m个结点,其余层均只有 1 1 1个结点。

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

要使 m m m叉树的高度最小,则每个结点要有尽可能多的孩子。
因此,设除叶结点的每个结点均有 m m m个孩子。由“常见考点 4 , 4, 4,”可知,高度为 h h h m m m叉树至多有 m h − 1 m − 1 \frac{{{m}^{h}}-1}{m-1} m1mh1个结点。假设这 n n n个结点有 h h h层,则有:

m h − 1 − 1 m − 1 < n ≤ m h − 1 m − 1 \frac{{{m}^{h-1}}-1}{m-1}<n\le \frac{{{m}^{h}}-1}{m-1} m1mh11<nm1mh1

因为 n n n一定要大于 h − 1 h-1 h1层的最大结点数,同时小于等于 h h h层的最大结点数,这样才能让这 n n n个结点满足有 h h h的条件。
对这个不等式同时乘以 m − 1 m-1 m1再加 1 1 1,得:

m h − 1 < n ( m − 1 ) + 1 ≤ m h {{m}^{h-1}}<n\left( m-1 \right)+1\le {{m}^{h}} mh1<n(m1)+1mh

再同时对 m m m取对数,有:

h − 1 < log ⁡ m [ n ( m − 1 ) + 1 ] ≤ h h-1<{{\log }_{m}}\left[ n\left( m-1 \right)+1 \right]\le h h1<logm[n(m1)+1]h

所以解得 h h h的取值范围为:

log ⁡ m [ n ( m − 1 ) + 1 ] ≤ h < log ⁡ m [ n ( m − 1 ) + 1 ] + 1 {{\log }_{m}}\left[ n\left( m-1 \right)+1 \right]\le h<{{\log }_{m}}\left[ n\left( m-1 \right)+1 \right]+1 logm[n(m1)+1]h<logm[n(m1)+1]+1

h h h的值满足: h min ⁡ = ⌈ log ⁡ m ( n ( m − 1 ) + 1 ) ⌉ {{h}_{\min}}=\left\lceil {{\log }_{m}}\left( n\left( m-1 \right)+1 \right) \right\rceil hmin=logm(n(m1)+1)(向上取整)时上式成立。


总结一下,考点 2 2 2和考点 4 , 5 4, 5 4,5需要重点掌握。其余知识点也应反复学习,结合课后习题强化记忆加深理解,不熟悉的概念多加练习后自然就能记住。
从这一章开始将会步入408数据结构中最难的部分,树和图我以前在打OI的时候就学的不太好,得打起精神来了。
关于二叉树的内容将放在下一篇博客里。
以上。

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

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

相关文章

管理能力学习笔记八:Will-Skill矩阵“盘“团队

如何把握带教中的“度”&#xff0c;才能在把事情做好的基础上&#xff0c;又能使员工获得成长呢&#xff1f; 需要做到 合理授权 & 适当辅导 如何做到&#xff1f; 通过使用 意愿-技能矩阵(Will-Skill Matrix) 辨别不同带教方法的适用情形&#xff0c;"盘"…

设计模式之业务代表模式

在编程江湖的风雨中漂泊多年&#xff0c;每当我遇到那些错综复杂的业务逻辑和系统交互&#xff0c;总有一个模式像一位忠诚的骑士&#xff0c;默默守护着我的代码城堡&#xff0c;那就是——业务代表模式&#xff08;Business Delegate Pattern&#xff09;。它不是最耀眼的明星…

Springboot+MybatisPlus入门案例(postman测试)

一、项目框架 pom.xml依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apac…

基于SkyEye运行Android——应用最为广泛的移动设备操作系统

01.Android简介 Android&#xff08;安卓&#xff09;是一种基于Linux内核&#xff08;不包含GNU组件&#xff09;的开源操作系统&#xff0c;最初由安迪鲁宾开发&#xff0c;主要支持手机。2005年8月由Google收购注资&#xff1b;2007年11月&#xff0c;Google与84家硬件制造…

【区块链】共识算法简介

共识算法简介 区块链三要素&#xff1a; 去中心化共识算法智能合约 共识算法作为区块链三大核心技术之一&#xff0c;其重要性不言而喻。今天就来简单介绍共识算法的基本知识。 最简单的解释&#xff0c;共识算法就是要让所有节点达成共识&#xff0c;保证少数服从多数&#x…

链表(基于C语言单向链表)

链表的实现的思想 链表表示一种是基于链接结构的线性表&#xff0c;链表实现的思想如下&#xff1a; 1、将表中的元素分别储存在一批独立的储存块里面。 2、表结构中的结点都能找到与之相关的下一个结点。 3、在前一个结点里用链表的方式显示的记录与下个结点之间的关联。 链…

原创字幕雨技术,二次剪辑混剪搬运短视频必备,轻松过原创

原创字幕雨素材教程&#xff0c;教你如何制作自己专属的字幕雨&#xff0c; 把素材运营到自己的二次剪辑&#xff0c;提升二创短视频的原创度&#xff0c; 帮助你做搬运或者短视频运营&#xff0c;轻松过原创。 课程目录&#xff1a; 1&#xff1a;什么是字幕雨 2&#xf…

Vue Vant 移动端如何禁止手机调起自带的输入键盘

前言 前不久在公司用Vue2开发了一个手机充值项目&#xff0c;键盘组件用的vant2的NumberKeyboard 数字键盘组件&#xff1b;上线后在IOS端只有一个vant数字键盘组件&#xff0c;但到了Android端&#xff0c;输入框一获取焦点不仅vant数字键盘弹出&#xff0c;连手机自带的键盘…

低空经济+飞行汽车:eVTOL技术详解

低空经济是以各种有人驾驶和无人驾驶航空器的各类低空飞行活动为牵引&#xff0c;辐射带动相关领域融合发展的综合性经济形态。它广泛体现于第一、第二、第三产业之中&#xff0c;在促进经济发展、加强社会保障、服务国防事业等方面发挥着日益重要的作用。 飞行汽车&#xff0c…

2024年第六届先进材料、机械和制造国际会议(AMMM 2024)即将召开!

2024年第六届先进材料、机械和制造国际会议&#xff08;AMMM 2024&#xff09;将于2024年9月6-8日在日本东京举行。AMMM 2024将以国际材料&#xff0c;机械和制造为主题&#xff0c;吸引到来自多个领域的研究人员和学者相聚在一起分享知识&#xff0c;讨论想法&#xff0c;并了…

如何免费体验 gpt2-chatbot

如何免费体验 gpt2-chatbot 就在五一假期期间&#xff0c;一个神秘模型在没有任何官方文件的情况下突然发布。发布后不到 12 小时就立即引起人工智能爱好者和专家们的关注。这个名为“gpt2-chatbot”的神秘新模型凭借其令人印象深刻的能力轰动全球。有人猜测它可能是 OpenAI 的…

手搓堆(C语言)

Heap.h #pragma once#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> #include <string.h> typedef int HPDataType; typedef struct Heap {HPDataType* a;int size;int capacity; }Heap;//初始化 void Heap…

MateBook D 14 2020款 锐龙版 R5/R7 集显(NblL-WFQ9)原厂Win10系统文件安装包下载

HUAWEI华为MateBook D 14锐龙处理器NblL-WFQ9原装出厂Windows10系统&#xff0c;恢复开箱状态预装OEM系统 适用型号&#xff1a;NblL-WXX9、NblL-WFQ9、NblL-WFP9 链接&#xff1a;https://pan.baidu.com/s/1Zl5gPjokDzkz0nHzGlRXVA?pwd5aty 提取码&#xff1a;5aty 华为…

408数据结构-二叉树的概念、性质与存储结构 自学知识点整理

前置知识&#xff1a;树的基本概念与性质 二叉树的定义 二叉树是一种特殊的树形结构&#xff0c;其特点是每个结点至多只有两棵子树&#xff08;即二叉树中不存在度大于 2 2 2的结点&#xff09;&#xff0c;并且二叉树是有序树&#xff0c;左右子树不能互换。 与树类似&#…

Java | Leetcode Java题解之第66题加一

题目&#xff1a; 题解&#xff1a; class Solution {public int[] plusOne(int[] digits) {int n digits.length;for (int i n - 1; i > 0; --i) {if (digits[i] ! 9) {digits[i];for (int j i 1; j < n; j) {digits[j] 0;}return digits;}}// digits 中所有的元素…

二维数组的鞍点(C语言)

一、鞍点解释&#xff1b; 鞍点就是该位置上的元素在该行上最大、在该列上最小&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff…

利用大语言模型(KIMI)构建智能产品的控制信息模型

数字化的核心是数字化建模&#xff0c;为一个事物构建数字模型是一项十分复杂的工作。不同的应用场景&#xff0c;对事物的关注重点的不同的。例如&#xff0c;对于一个智能传感器而言&#xff0c;从商业的角度看&#xff0c;产品的信息模型中应该包括产品的类型&#xff0c;名…

Copilot Venture Studio創始合伙人楊林苑確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…

栈的拿手好戏——括号匹配问题

文章目录 1. 栈的应用——括号匹配问题2. 思路分析3. AC代码 1. 栈的应用——括号匹配问题 链接: link 2. 思路分析 这道题呢就非常适合用栈来搞&#xff1a; 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’…

数字电路-5路呼叫显示电路和8路抢答器电路

本内容涉及两个电路&#xff0c;分别为5路呼叫显示电路和8路抢答器电路&#xff0c;包含Multisim仿真原文件&#xff0c;为掌握FPGA做个铺垫。紫色文字是超链接&#xff0c;点击自动跳转至相关博文。持续更新&#xff0c;原创不易&#xff01; 目录&#xff1a; 一、5路呼叫显…