二叉树基础概念详解

news2024/11/15 8:42:08

文章目录

  • 前言
  • 1. 树的基本概念
  • 2. 二叉树的基本概念
  • 3. 特殊二叉树
    • 🍑 满二叉树
    • 🍑 完全二叉树
    • 🍑 斜树
  • 4. 二叉树的性质
    • 🍑 性质一
    • 🍑 性质二
    • 🍑 性质三
    • 🍑 性质四
    • 🍑 性质五
    • 🍑 性质六
  • 5. 总结


前言

树形结构的应用场合非常多,比如计算机某块硬盘下的目录结构、一个公司的组织架构划分、一个家族的族谱等等。

在计算机领域,树形结构也被广泛应用,比如编译器、数据库里都会用到,也因此,树形结构非常重要。而在众多树形结构中,最常用的一种,就是二叉树了。

1. 树的基本概念

在日常生活中,树是一种随处可见的植物,它由树根、树枝、树叶这些主要结构组成。而 “树形结构”,就是基于日常生活中的树而得名的一种非线性数据结构。

什么是 “非线性的数据结构” ?想象一下,一根树枝可以分叉出很多树枝、树叶,我们也可以将 “非线性的数据结构” 理解成一种一对多的关系,而不是像一条线一样,按顺序排列的一对一关系。

在绘制树这种数据结构时,人们往往会从上向下绘制,也就是将树根绘制在最上面,下图就是一棵树:

在这里插入图片描述

在这幅图中,所有标有字母的圆圈就是树的节点。树(Tree)是 n(n≥0)个节点的有限集。这里有了一个限定范围,n≥0。你可以尝试想象几种不同的情况,比如 n=0,n=1,以及 n>1 这三种。

当 n=0 时,树就是一棵空树。

如果树为非空,那么就会有两种情况:

  • 一种,就是 n=1 的时候,有且只有唯一的一个称为根 / 树根(Root)的节点;
  • 另一种,就是 n>1 时,其余节点可以分为 m(m>0)个互不相交的有限集 T1、T2、…、Tm,其中每个集合自身又是一棵树,它们叫做根的子树(SubTree)。而节点 A 就是树根 / 根节点。
  • 注意,一棵树可以只有树根而没有其他节点。

在这里插入图片描述

子树的概念比较难理解,我们举个例子。下图中:

在这里插入图片描述

B、D、E、F、H、I、J、K,也就是左半边,构成了以 B 为根节点的 子树

根据树的定义:有限集 T1 由 B、D、E、F、H、I、J、K 构成。C、G,也就是右半边,构成了以 C 为根节点的子树。根据树的定义:有限集 T2 由 C、G 构成。

子树,又可以看成是由更多更小的、互不相交的子树构成,所以我们也把树称为是一种递归定义的数据结构。如果树中节点的各子树从左到右是有次序的、不能互换的,则称该树为有序树,否则就叫做无序树。

注意,如果子树存在,那么子树之间不能相交,比如下图所列的情形就不是一棵树,节点 E 和 F 之间以及节点 G 和 K 之间都不应该有连线:

在这里插入图片描述

树的节点包含一个数据元素以及若干指向其子树的分支(分支也可以称为指针或索引),这里会经常用到一些概念。这些概念不需要死记硬背,只需要理解就好,将来忘记了可以随时来回顾。(以下面这幅图为例)

在这里插入图片描述

  • 节点拥有的子树的个数,叫做 节点的度(Degree),比如图中节点 A 的度是 2,节点 B 的度为 3,节点 C 的度为 1。
  • 如果度为 0,那么这个节点就叫做 叶节点(Leaf)或终端节点,图中节点 H、I、J、K、G 节点都是叶节点。相反,度不为 0 的节点称为 分支节点非终端节点。除根节点外的分支节点也称为内部节点。
  • 树的度 是树内各节点度的最大值,图中节点 B 或者节点 D 的度都为 3,是节点度的最大值,因此,树的度也是 3。
  • 节点的子树的根称为该节点的 子节点(Child),图中节点 A 的子节点是节点 B、C,而节点 B 的子节点是节点 D、E、F。同样,节点 B、C 的 父节点(Parent)就是节点 A,节点 D、E、F 的父节点就是节点 B。
    • 这里注意,某个节点只能有一个父节点,如果节点 E 和节点 F 之间有连线,那么节点 B 和节点 E 都可以被认为是节点 F 的父节点;如果节点 G 和节点 K 之间有连线,那么节点 F 和节点 G 都可以被认为是节点 K 的父节点。此时就是一个非法的树,这种数据结构应该称为图。同时也要注意,根节点没有父节点。
  • 节点的 层次(Level)是从树根开始算起的,根为第一层,根的孩子为第二层,以此类推,某个节点位于第 i 层,其子树就位于第 i+1 层。图中节点 A 为第一层,节点 B、C 为第二层,节点 D、E、F、G 为第三层,节点 H、I、J、K 为第四层。树的高度或深度(Depth)是树中节点最大层数,因此图中树的深度是 4。
  • 相同父节点的孩子之间互称 兄弟节点(Sibling),比如 D、E 节点是兄弟节点,H、I 节点也是兄弟节点。层次相同但父节点不同的孩子之间互称 堂兄弟节点,比如图中节点 F 与节点 G,节点 J 与节点 K。

2. 二叉树的基本概念

树的结构多种多样,对树的操作也各不相同,但最常用是二叉树,因为大部分树都可以转换为二叉树。那什么是二叉树呢?

二叉树的特点是每个节点 最多 有两棵子树(左子树右子树),这意味着每个节点的度都不大于 2。它的两棵子树有左右之分。想象一下,人的脚是分左右的,右脚不能穿左侧的鞋,和二叉树两棵子树的左右之分是一个道理。另外,次序也是不能随意颠倒的,这表明二叉树是一棵有序树。

这里,我们给二叉树下一个明确的定义:二叉树是 n(n≥0)个节点的有限集合,该集合或者为空集(即 n=0,叫做空二叉树),或者由一个根节点和两个互不相交的该根节点的左子树和右子树构成,左子树和右子树又分别是一棵二叉树。

除空二叉树外,下图列出了其他四种形态的二叉树,分别是只有根节点的二叉树、只有左子树的二叉树、只有右子树的二叉树、既有左子树又有右子树的二叉树。

在这里插入图片描述

你可以思考一下,有三个节点的二叉树会有几种形态呢?答案是有 5 种形态,如下图所示:

在这里插入图片描述

3. 特殊二叉树

二叉树有一些特殊的形态在后面会经常被提到或者用到,这里先认识一下满二叉树、完全二叉树以及斜树。

🍑 满二叉树

如下图所示,就是一棵满二叉树:

在这里插入图片描述

我们先说下满二叉树有什么特点:

  • 所有的分支节点都存在左子树和右子树(非叶节点的度一定是 2)。
  • 所有的叶子都在同一层上(这也意味着叶节点只能出现在最下一层)。
  • 不存在度为非 0 和非 2 的节点。

可以看到,满二叉树看上去是很平衡的。在同样高度的二叉树当中,满二叉树一定是节点个数最多,叶子数最多的二叉树。

那要怎么去定义 “满二叉树” 呢?

观察一下,图中,第一层有 1 个节点,第二层有 2 个节点,第三层有 4 个节点,第四层有 8 个节点,所以总共的节点数为 1+2+4+8=15 个,即 2 4 − 1 2^4-1 241 个。

由此,我们可以给出满二叉树的定义:满二叉树是指一棵高度为 h,且含有 2 h − 1 2^h-1 2h1 个节点的二叉树。

最后,我们说一下编号的特点。

按照图中的顺序给每个满二叉树的节点从上到下从左到右进行编号,比如图中的 1 到 15,不难发现,编号为 i 的分支节点,它的左孩子的编号为 2i,右孩子的编号为 2i+1。如果节点 i 存在父节点,则其父节点的编号是 i/2 的结果,如果没整除,那么去掉小数部分即可。

🍑 完全二叉树

完全二叉树理解起来有一点难度。下图就是一棵完全二叉树:

在这里插入图片描述

想一想,完全二叉树有什么特点呢?

  • 叶节点都在最底下两层。
  • 最后一层的叶节点都靠左侧排列(左侧连续),并且除最后一层,其他层的节点个数都要达到最大。
  • 倒数第二层如果有叶节点,则叶节点都靠右侧排列(右侧连续)。
  • 如果节点度为 1,则该节点只有左子树,不可以只有右子树。而且最多只有一个度为 1 的节点。可以看到,满二叉树一定是一棵完全二叉树,但完全二叉树不一定是满二叉树。

可以看到,满二叉树一定是一棵完全二叉树,但完全二叉树不一定是满二叉树。

现在,我们可以借助满二叉树的概念,给出完全二叉树的定义:一棵高度为 h 的完全二叉树,当且仅当其每个节点都与高度为 h 的满二叉树中编号为 1~n 的节点一 一对应时,称为完全二叉树。

按照图中的顺序,我们给每个完全二叉树的节点从上到下从左到右进行编号,不难发现,编号为 i 的分支节点,其左孩子的编号为 2i,右孩子的编号为 2i+1。如果节点 i 存在父节点,则其父节点的编号是 i/2 的结果,如果没整除则去掉小数部分。

按照图中的顺序给每个完全二叉树的节点从上到下从左到右进行编号,随便拿出一个节点比如编号为 9 的节点,会发现该节点是编号为 4 的节点的右子树。

此时再观察下图中的满二叉树,会发现,编号为 9 的节点与上图中编号为 9 的节点位置完全相同,并且同样是编号为 4 的节点的右子树。

在这里插入图片描述

下图所示的几棵二叉树就都不是完全二叉树:

在这里插入图片描述

图中第一棵树的节点 5 缺少左子树(编号 10),第二棵树的节点 3 缺少两棵子树(编号 6、7),第三棵树的节点 5 缺少两棵子树(编号 10、11)。

所以,如何判断是否是完全二叉树,就可以按照下面的步骤去做:

  • 在看到一棵树后,按照满二叉树的情形给该二叉树的节点进行逐层按顺序编号,如果编号出现了空缺,就不是完全二叉树,否则就是完全二叉树。
  • 一棵满二叉树,依次把编号最大的 1 到多个节点去掉(比如去掉上图中的 15、14、13 节点),得到的就是一棵完全二叉树。
  • 如果一个完全二叉树有 n 个节点,那么当 “节点的编号” ≤ (n/2) 时,这些节点就是分支节点,而当 “节点的编号” > (n/2) 时,这些节点就是叶节点。注意,n/2 如果没有整除则去掉小数部分。

🍑 斜树

所有节点都只有左子树的二叉树叫左斜树。所有节点都只有右子树的二叉树叫右斜树。这两种树统称斜树。

在这里插入图片描述

斜树的特点是每一层只有一个节点,节点个数与二叉树深度相同。这种树看起来更像线性表。

4. 二叉树的性质

在对二叉树进行编码过程中,尤其是涉及开辟多少空间保存数据的时候,往往会用到二叉树的性质。(五星级非常重要)

🍑 性质一

性质一:在二叉树的第 i 层上,最多有 2 i − 1 2^i−1 2i1 个节点( i ≥ 1 i≥1 i1

满二叉树可以认为是第 i 层上节点最多的二叉树了。回忆一下满二叉树的定义:满二叉树是指一棵高度为 h,且含有 2 h − 1 2^h-1 2h1 个节点的二叉树。在下图中,第一层有 1 个节点,第二层有 2 个节点,第三层有 4 个节点,第四层有 8 个节点,满足二叉树的性质一。

在这里插入图片描述

🍑 性质二

性质二:高度为 k 的二叉树至多有 2 k − 1 2^k-1 2k1 个节点( k ≥ 1 k≥1 k1

满二叉树可以认为是有最多个节点的二叉树了。在下图中,满二叉树的高度为 4 层,第一层有 1 个节点,第二层有 2 个节点,第三层有 4 个节点,第四层有 8 个节点,总共的节点数为 1+2+4+8=15 个,即 2 4 − 1 2^4-1 241 个节点,满足二叉树的性质二。

在这里插入图片描述

🍑 性质三

性质三:二叉树节点的总数量等于节点的总度数 +1

观察一棵二叉树不难发现,除根节点外,每个节点头上都有一个分支(每个节点都有一个父节点),那么一棵二叉树节点总数量其实就是这些分支的总数量 +1,之所以 +1,是因为根节点头上没有分支。一棵二叉树节点的总度数,其实就是每个节点头上分支的总数量,所以得出性质三的结论:二叉树节点的总数量 = 节点的总度数 + 1。

在这里插入图片描述

🍑 性质四

性质四:对任何一棵二叉树,如果其叶节点数量为 n 0 n0 n0​,度为 2 的节点数量为 n 2 ​ n2​ n2​,则叶节点的数量比有两棵子树的节点数量多一个,即: n 0 ​ = n 2 ​ + 1 n0​=n2​+1 n0​=n2​+1

这里我们可以来证明一下,如下图所示:

在这里插入图片描述

观察上面的完全二叉树,除了叶节点(度为 0),其他的节点度数要么为 1 ,要么为 2,如果假设度为 1 的节点数量是 n1​,那么该二叉树的节点总数量 n = n 0 ​ + n 1 ​ + n 2 n = n0​ + n1​ + n2 n=n0​+n1​+n2​。

再算一算节点的总度数,节点的总度数应该等于 【度为 2 的节点数量 * 2 + 度为 1 的节点数量 * 1】,因此,节点的总度数 = 2 n 2 ​ + n 1 2n2​ + n1 2n2​+n1​。

再根据性质三,节点的总数量 = 节点的总度数 + 1,就有:节点总数量 n = 2 n 2 ​ + n 1 ​ + 1 n = 2n2​ + n1​+ 1 n=2n2​+n1​+1

结合刚才的节点总数量式子,可以得到: n 0 ​ + n 1 ​ + n 2 ​ = 2 n 2 ​ + n 1 ​ + 1 n0​ + n1​ + n2​ = 2n2​ + n1​+ 1 n0​+n1​+n2​=2n2​+n1​+1

两边同时减少一个 n 1 n1 n1​ 和一个 n 2 n2 n2​,不难得到: n 0 ​ = n 2 ​ + 1 n0​ = n2​+ 1 n0​=n2​+1,得出了性质四的结论。

试想一下,如果有一个完全二叉树,知道了其节点总数 n n n,那么如何求出 n 0 n0 n0​(叶节点数量)、 n 1 n1 n1​(度为 1 的节点数量)、 n 2 n2 n2​(度为 2 的节点数量)的值呢?

首先,完全二叉树最多只有一个度为 1 的节点,即 n 1 ​ = 0 n1​= 0 n1​=0 或者 n 1 ​ = 1 n1​= 1 n1​=1

其次,根据前面的公式 n = 2 n 2 ​ + n 1 ​ + 1 n = 2n2​ + n1​+ 1 n=2n2​+n1​+1。该公式中的 2 n 2 ​ + 1 2n2​+ 1 2n2​+1 的结果肯定是奇数(不能被 2 整除的整数)。

那么,如果该完全二叉树节点总数是偶数(能够被 2 所整除的整数)个,那么 n 1 n1 n1​ 必定是奇数也就是值 1。如果该完全二叉树节点总数是奇数,那么 n 1 n1 n1​ 必定是偶数也就是值 0。

最后, n n n 值已知, n 1 n1 n1​ 值上步已推出,根据公式 n = 2 n 2 ​ + n 1 ​ + 1 n = 2n2​ + n1​ + 1 n=2n2​+n1​+1 n 2 n2 n2​ 值就可以求得。再根据性质 4 的 n 0 ​ = n 2 ​ + 1 n0​= n2​+ 1 n0​=n2​+1 n 0 ​ n0​ n0​ 的值就可以求得。

🍑 性质五

性质五:具有 n( n > 0 )个节点的完全二叉树的高度为 ⌈ l o g 2 ( n + 1 ) ​​ ⌉ ⌈ log_2^{(n+1)}​ ​⌉ log2(n+1)​​ 或者 ⌊ l o g 2 n ​ ⌋ + 1 ⌊log_2^n​ ⌋ +1 log2n+1 ​。

这里要注意:第一,符号 ⌈ x ⌉ ⌈ x ⌉ x 表示向上取整,也就是比 x 大的最小整数。如果 x 本身是整数,那么 ⌈ x ⌉ ⌈ x ⌉ x 就等于本身。

第二,符号 ⌊ x ⌋ ⌊ x ⌋ x 表示向下取整,也就是比 x 小的最大整数。如果 x 本身是整数,那么 ⌊ x ⌋ ⌊ x ⌋ x 就等于本身。

我们先来看一看第一个式子是如何推导的:

在这里插入图片描述

再看一看第二个式子是如何推导的:

在这里插入图片描述

所以,不妨扩展一下性质五:一个完全二叉树的第 k 的节点的高度为 ⌈ l o g 2 ( k + 1 ) ​ ⌉ ⌈log_2^{(k+1)}​⌉ log2(k+1) 或者 ⌊ l o g 2 k ​ ⌋ + 1 ⌊log_2^k​ ⌋ +1 log2k+1

🍑 性质六

性质六:如果对一棵有 n 个节点的完全二叉树的节点按层从 1 开始编号(从上到下从左到右编号,如图所示)

在这里插入图片描述

则对任意节点 i i i 1 ≤ i ≤ n 1≤i≤n 1in ),有:

  • 如果 i = 1 i=1 i=1,则节点 i i i 是二叉树的根,无父节点;如果 i > 1 i>1 i>1,则其父节点编号是 ⌊ i / 2 ⌋ ⌊i/2⌋ i/2
  • 如果 2 i > n 2i>n 2i>n,则节点 i i i 为叶子节点(无孩子节点);否则,其左孩子是节点 2 i 2i 2i
  • 如果 2 i + 1 > n 2i+1>n 2i+1>n,则节点 i i i 无右孩子(但可能有左孩子),否则其右孩子是节点 2 i + 1 2i+1 2i+1

5. 总结

这篇文章描述了树形结构,也给出了许多和它相关的基本概念,其中比较重要的概念是树根、子树、节点的度,叶节点、子节点、父节点、兄弟节点、树的高度这几个部分。

其次,引入了二叉树的概念。可以说,二叉树在树形结构中最常用,主要重点放在了认识各种形态的二叉树上,比如理解满二叉树、完全二叉树、斜树的概念。

最后,则是二叉树性质的学习。也许你会觉得这些性质离实际应用太过遥远,但其实它对于后面编写程序时决定内存空间分配多少、二叉树的高度和节点数量如何计算以及如何寻找某个节点的父或子节点等都具有重要的指导意义,这一点在后续编写代码时你会越来越清楚。

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

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

相关文章

华为EC6108V9E/EC6108V9I_rk3228_安卓4.4.4_通刷_卡刷固件包

华为EC6108V9E/EC6108V9I_rk3228_安卓4.4.4_通刷_卡刷固件包-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的…

【Java】线程池--ThreadPoolExecutor底层原理源码的理解

文章目录 一、根据代码查看jdk提供的3种线程池创建:二、3种方式源码分析1、Executors.newCachedThreadPool()2、Executors.newFixedThreadPool(10)3、Executors.newSingleThreadExecutor() 三、自定义方式执行提交优先级执行优先级 一、根据代码查看jdk提供的3种线程…

第2章Elasticsearch入门

1.正排索引和倒排索引 正排索引: 正排索引(Forward Index)是一种用于搜索引擎和文本检索系统的索引结构,它将文档中的每个单词都映射到该单词在文档中出现的位置。正排索引可以帮助快速定位、检索和渲染文档内容,但它需要消耗大…

AI 工具合辑盘点(十一)持续更新 之 AI 学术研究工具

许多学生和研究人员已经在利用人工智能进行研究。它可以让你更容易地了解最新研究成果,并帮助你组织和正确引用你最喜爱的研究论文。 从生成长篇研究论文摘要到通知你领域内的新趋势,研究中的AI工具节省了大量时间和精力。如果你在学术界,那…

数据库系统

目录 第三章、数据库系统1、数据库模式1.1、三级模式--两级映射1.2、数据库设计过程 2、ER模型3、关系代数与元组演算4、规范化理论4.1、函数依赖4.2、价值与用途4.3、键4.4、范式4.5、模式分解 5、并发控制6、数据库完整性约束7、数据备份8、数控故障与恢复9、数据仓库与数据挖…

网络安全合规-数据安全风险评估

一、法律依据: 依据《数据安全法》第三十条的规定,重要数据的处理者应当按照规定对其数据处理活动定期开展风险评估,并向有关主管部门报送风险评估报告。 依据《网络数据安全管理条例》(征求意见稿) 第三十二条规定&am…

实时通信的服务器推送机制 EventSource(SSE) 简介,附 go 实现示例

简介 不知道大家有没有见过 Content-Type:text/event-stream 的请求头,这是 HTML5 中的 EventSource 是一项强大的 API,通过服务器推送实现实时通信。 与 WebSocket 相比,EventSource 提供了一种简单而可靠的单向通信机制(服务器…

《Linux 内核设计与实现》03. 进程管理

文章目录 进程描述符及任务结构分配进程描述符进程描述符的存放进程状态设置当前进程状态进程上下文进程家族树 进程创建线程在 Linux 中的实现创建线程内核线程 进程终结删除进程描述符孤儿进程 进程描述符及任务结构 内核把进程存放在任务队列(task list&#xf…

MySQL高级--锁

一、锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题…

新手必看:腾讯云轻量服务器使用限制

腾讯云轻量应用服务器和云服务器CVM相比具有一些限制,比如轻量服务器不支持更换内网IP地址,轻量服务器只能套餐整体升级且不支持降配,轻量不支持用户自定义配置私有网络VPC,还有如实例配额、云硬盘配额、备案限制和内网连通性等限…

整理一下最近了解到的AIGC工具

AIGC工具的一点整理 前言AIGC类型图像生成类Stable diffusionMidjourneyDALLE 2三种工具比较DeepFloyd IF 文本生成语音生成So-vits-svc 4.0 结尾 前言 好久没有写csdn博客了,突然不知道写点什么,最近AIGC真的很火,有一种三天不看就跟不上发…

计算机系统-异常控制流

例行前言: 本篇不是学习课程时的笔记,是重看这本书时的简记。对于学习本课程的同学,未涉及的内容不代表考试不涉及。核心内容是信号部分。本章内容介绍了较多的信号处理函数,需要在实验中巩固本章所学内容及相关问题的处理(并发&…

五彩斑斓的黑:Fun with PyQt5+CMake+C++

Fun Pain Fun with PyQt5CMakeC 本文相关代码GitCode地址 这个项目与PyQt5只有半毛钱关系。事情是这样发生的。当时,我在一个新电脑上干活,装了miniconda,装了PyQt5,干着干着突然要整一个Qt5。我想也挺好,据说C 17里…

Node.js和在浏览器之中的不同

在Node.js中编写JavaScript应用程序与在浏览器中为Web编程有何不同 1、在浏览器中,大多数时候您所做的是与DOM或其他Web平台API(如Cookie)进行交互。当然,Node.js中并不存在这些。您没有浏览器提供的文档、窗口和所有其他对象。 …

让测试更轻松:学习Selenium进行Web应用程序自动化测试

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 摘要: 什么是Selenium 安装Selenium 编写自动化测试脚本 第一步:导入Selenium库 …

前端006_头部快捷导航_标签导航栏

效果如下,红色方框里面有快捷导航 1、添加标签栏导航组件 拷贝vue-element-admin 的 @/layout/components/TagsView 目录及文件到 mengxuegu-blog-admin 对应目录下 [root@pgdb vue-element-admin]# cp -r src/layout/components/TagsView ../db-manager-system/src/layou…

UE蓝图基础学习笔记(未完待续2023/05/06)

文章目录 一、项目创建1)准备流程(选择模板、开发语言、平台、质量等)2)界面介绍 二、Actor三、操作关卡对象(旋转、移动、缩放和坐标轴)四、常用快捷键五、运行游戏六、蓝图介绍七、蓝图节点八、操作事件图…

Vben Admin 自学记录 —— Drawer组件的基本使用及练习(持续更新中...)

Drawer 抽屉组件 对 antv 的 drawer 组件进行封装,扩展拖拽,全屏,自适应高度等功能。 Drawer相关使用及概念 练习 —— 在之前table基础上,添加查看功能,点击查看按钮,弹出抽屉显示单条表格数据&#xf…

基于80C51单片机的电子钟设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87761539?spm1001.2014.3001.5503 源码获取 主要内容: 电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比&#xf…

SpringBatch之实际操作

文章目录 1 SpringBatch操作1.1 SpringBatch介绍1.2 依赖配置相关1.2.1 pom.xml1.2.2 mysql 依赖库表1.2.3 启动配置1.2.4 数据库配置 1.3 示例Demo1.3.1 简单执行1.3.2 报错 1.4 流程控制1.4.1 多步骤任务1.4.2 Flow用法1.4.3 并发执行1.4.4 任务决策1.4.5 任务嵌套 1.5 数据操…