当前位置: 首页 > news >正文

【数据结构】树的基本:结点、度、高度与计算

树是数据结构中一种重要的非线性结构,广泛应用于计算机科学的各个领域,例如文件系统、数据库索引、编译器等。理解树的各种性质,如结点数、度、高度等,对于解决实际问题至关重要。

本文将会探讨树的基本概念,以及给出几个王道考研例题和常见公式,不对树的数据结构做出过多原理解释

1. 树的基本概念

  • 结点 (Node): 树中的每个元素称为结点。结点包含数据和指向子结点的指针。
  • 边 (Edge): 连接两个结点的线称为边。
  • 根结点 (Root): 树的顶端结点,没有父结点。
  • 父结点 (Parent): 若一个结点包含指向另一个结点的指针,则称前者为后者的父结点。
  • 子结点 (Child): 若一个结点被另一个结点指向,则称前者为后者的子结点。
  • 兄弟结点 (Sibling): 拥有同一个父结点的结点互称为兄弟结点。
  • 叶结点 (Leaf): 没有子结点的结点称为叶结点。
  • 度 (Degree): 一个结点的子结点个数称为该结点的度。
  • 树的度 (Degree of a Tree): 树中所有结点的度的最大值称为树的度。
  • 路径 (Path): 从一个结点到另一个结点所经过的结点序列称为路径。
  • 路径长度 (Path Length): 路径上边的数量。
  • 层 (Level): 根结点为第 1 层,其子结点为第 2 层,以此类推。
  • 高度 (Height): 从根结点到最远叶子结点的最长路径上的结点数(或边的数量加 1)。
  • 深度 (Depth): 从根结点到该结点的路径长度加 1。

2. 树的重要性质和公式

  1. 结点数与度数的关系: n n n 为树的结点总数, n i n_i ni 表示度为 i i i 的结点个数,则有:

    n = ∑ i = 0 m n i n = \sum_{i=0}^{m} n_i n=i=0mni

    其中 m m m 是树的度。同时,根据每个结点(除根结点外)都恰好有一个父结点,可以得到:

    n = ∑ i = 0 m i ⋅ n i + 1 n = \sum_{i=0}^{m} i \cdot n_i + 1 n=i=0mini+1

    这个公式非常重要,在很多题目中都会用到。

  2. i i i 层最多结点数: 度为 m m m 的树中,第 i i i 层上至多有 m i − 1 m^{i-1} mi1 个结点 ( i ≥ 1 i \ge 1 i1)。这个性质可以通过数学归纳法证明。

  3. 高度为 h h h m m m 叉树最多结点数: 高度为 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. n n n 个结点的 m m m 叉树最小高度: 度为 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)⌉,其中 ⌈ x ⌉ \lceil x \rceil x 表示向上取整。为了使高度最小,应尽可能使每一层的结点数都达到最大值,即形成完全 m m m 叉树。

    推导过程如下:假设前 h − 1 h-1 h1 层都是满的,则前 h − 1 h-1 h1 层的结点数为 m h − 1 − 1 m − 1 \frac{m^{h-1} - 1}{m - 1} m1mh11。加上第 h h h 层的结点,总结点数 n n n 满足:

    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

    化简不等式,可得最小高度 h h h

  5. n n n 个结点的 m m m 叉树最大高度: 度为 m m m、具有 n n n 个结点的树的最大高度 h h h n − m + 1 n - m + 1 nm+1。为了使高度最大,应尽可能使除少数结点外,其他结点都只有一个子结点,形成“链状”结构。


3. 例题实战

例题 04: 对于一棵具有 n n n 个结点、度为 4 的树来说,()。

A. 树的高度至多是 n − 3 n-3 n3
B. 树的高度至多是 n − 4 n-4 n4
C. 第 i i i 层上至多有 4 ( i − 1 ) 4(i-1) 4(i1) 个结点
D. 至少在某一层上正好有 4 个结点

解析: 根据性质 5,度为 4 的树,其最大高度为 n − 4 + 1 = n − 3 n - 4 + 1 = n - 3 n4+1=n3,故 A 正确。C 选项根据性质 2,第 i i i 层最多有 4 i − 1 4^{i-1} 4i1 个结点,而不是 4 ( i − 1 ) 4(i-1) 4(i1) 个。D 不一定成立,例如只有根结点和四个子结点的树,只有一层有 4 个结点。

答案: A


例题 05: 度为 4、高度为 h h h 的树,()。

A. 至少有 h + 3 h+3 h+3 个结点
B. 至多有 4 h − 1 4h-1 4h1 个结点
C. 至少有 4 h 4h 4h 个结点
D. 至多有 h + 4 h + 4 h+4 个结点

解析: 根据性质 5 的逆推,高度为 h h h、度为 m m m 的树至少有 h + m − 1 h + m - 1 h+m1 个结点,所以度为 4、高度为 h h h 的树至少有 h + 4 − 1 = h + 3 h + 4 - 1 = h + 3 h+41=h+3 个结点,故 A 正确。

答案: A


例题 06: 假定一棵度为 3 的树中,结点数为 50,则其最小高度为 ()。

A. 3
B. 4
C. 5
D. 6

解析: 根据性质 4,最小高度 h = ⌈ log ⁡ 3 ( 50 ( 3 − 1 ) + 1 ) ⌉ = ⌈ log ⁡ 3 ( 101 ) ⌉ h = \lceil \log_3(50(3-1) + 1) \rceil = \lceil \log_3(101) \rceil h=log3(50(31)+1)⌉=log3(101)⌉。因为 3 4 = 81 3^4 = 81 34=81 3 5 = 243 3^5 = 243 35=243,所以 log ⁡ 3 ( 101 ) \log_3(101) log3(101) 介于 4 和 5 之间,向上取整为 5。

答案: C


例题 07: 若森林 F F F 有 15 条边、25 个结点,则 F F F 包含树的个数是( )。

A. 8
B. 9
C. 10
D. 11

解答:
森林的性质:对于一片森林,树的个数 t = n − e t=n−e t=ne,其中 n n n 是结点数, e e e 是边数。
代入数据:

t = 25 − 15 = 10 t=25−15=10 t=2515=10

因此,森林 FF 包含 10 棵树。

答案: C


例题8: 设呀一颗 m m m 叉树中有 N 1 N_1 N1 个度数为 1 1 1 的节点, N 2 N_2 N2 个度数为 2 2 2 的节点 . . . ... ... N m N_m Nm 个度数为 m m m 的节点,则该树中共有( )个叶子节点

A. ∑ i = 1 m ( i − 1 ) N i \sum_{i=1}^m(i-1) N_i i=1m(i1)Ni

B. ∑ i = 1 m N i \sum_{i=1}^m N_i i=1mNi

C. ∑ i = 2 m ( i − 1 ) N i \sum_{i=2}^m(i-1) N_i i=2m(i1)Ni

D. ∑ i = 2 m ( i − 1 ) N i + 1 \sum_{i=2}^m(i-1) N_i+1 i=2m(i1)Ni+1

**答案:**D

解答:

在一颗 m m m 叉树中,除了叶节点之外,每个节点都有一个父节点,因此我们可以利用下面两个等式:

  1. 总节点数 = 叶子节点 + 非叶子节点
  2. 总节点数 = 总度数 + 1 -> 总度数 = 总节点数 - 1

所以,我们假设总节点数为 N N N,叶子节点数为 N 0 N_0 N0,则

  • 总结点数 N = N 0 + N 1 + N 2 + . . . + N m N = N_0 + N_1 + N_2 + ... + Nm N=N0+N1+N2+...+Nm
  • 总度数 = 1 ∗ N 1 + 2 ∗ N 2 + . . . + m ∗ N M 1 * N_1 + 2 * N_2 + ... + m * N_M 1N1+2N2+...+mNM

联立等式

N 0 + N 1 + N 2 + . . . + N m − 1 = 1 ∗ N 1 + 2 ∗ N 2 + 3 ∗ N 3 + . . . + m ∗ N M N_0 + N_1 + N_2 + ... + Nm - 1 = 1 * N_1 + 2 * N_2 + 3 * N_3 + ... + m * N_M N0+N1+N2+...+Nm1=1N1+2N2+3N3+...+mNM

可解的

N 0 = 1 ∗ N 2 + . . . + ( m − 1 ) ∗ N m + 1 N_0 = 1 * N_2 + ... + (m - 1) * N_m + 1 N0=1N2+...+(m1)Nm+1

N 0 = ∑ m = 2 m ( m − 1 ) N m + 1 N_0 = \sum_{m=2}^m(m - 1)N_m + 1 N0=m=2m(m1)Nm+1


例题9:【2010 统考真题】在一棵度为 4 的树 T T T 中,若有 20 个度为 4 的结点, 10 个度为 3 的结点, 1 个度为 2 的结点, 10 个度为 1 的结点,则树 T T T 的叶结点个数是( )。
A. 41
B. 82
C. 113
D. 122

答案: B

解答:

这个问题是问题 08 的一个具体应用。已知了每个度数的结点数量,我们可以直接套用问题 08 中推导出的公式。

根据问题 08 的公式:

N 0 = ∑ i = 2 m ( i − 1 ) N i + 1 N_0=\sum_{i=2}^m(i-1) N_i+1 N0=i=2m(i1)Ni+1

在问题 09 中, m = 4 , N 1 = 10 , N 2 = 1 , N 3 = 10 , N 4 = 20 m=4, ~ N_1=10, N_2=1, N_3=10, N_4=20 m=4, N1=10,N2=1,N3=10,N4=20 。将这些直代入公式:

N 0 = ( 2 − 1 ) ∗ N 2 + ( 3 − 1 ) ∗ N 3 + ( 4 − 1 ) ∗ N 4 + 1 N 0 = ( 1 ) ∗ 1 + ( 2 ) ∗ 10 + ( 3 ) ∗ 20 + 1 N 0 = 1 + 20 + 60 + 1 N 0 = 82 \begin{aligned} & N_0=(2-1) * N_2+(3-1) * N_3+(4-1) * N_4+1 \\ & N_0=(1) * 1+(2) * 10+(3) * 20+1 \\ & N_0=1+20+60+1 \\ & N_0=82 \end{aligned} N0=(21)N2+(31)N3+(41)N4+1N0=(1)1+(2)10+(3)20+1N0=1+20+60+1N0=82

6. 关键点总结

  • 结点数与度数的关系: n = ∑ i = 0 m i ⋅ n i + 1 n = \sum_{i=0}^{m} i \cdot n_i + 1 n=i=0mini+1
  • 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)⌉
  • n n n 个结点的 m m m 叉树最大高度: n − m + 1 n - m + 1 nm+1
  • 对于一片森林,树的个数 t = n − e t=n−e t=ne,其中 n n n 是结点数, e e e 是边数

相关文章:

【数据结构】树的基本:结点、度、高度与计算

树是数据结构中一种重要的非线性结构&#xff0c;广泛应用于计算机科学的各个领域&#xff0c;例如文件系统、数据库索引、编译器等。理解树的各种性质&#xff0c;如结点数、度、高度等&#xff0c;对于解决实际问题至关重要。 本文将会探讨树的基本概念&#xff0c;以及给出几…...

1.24 共享内存和信号灯集

使用共享内存信号灯集实现两个进程之间相互对话。 程序代码&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stst.h> #include <fcntl.h> #…...

正则表达式以及Qt中的使用

目录 一、正则表达式 1、基本匹配&#xff1a; 2、元字符&#xff1a; 2.1 .运算符&#xff1a; 2.2 字符集&#xff1a; 2.3 重复次数&#xff1a; 2.4 量词{} 2.5 特征标群() 2.6 或运算符 2.7 \反斜线转码特殊字符 2.8 锚点 3、简写字符 4、零宽度断言 4.1 正…...

STM32简介

STM32简介 STM32是ST公司基于ARMCortex-M内核开发的32位微控制器 &#xff08;Microcontroller&#xff09; MCU微控制器、MPU微处理器、CPU中央处理器 1.应用领域 STM32常应用于嵌入式领域。 如智能车&#xff1a;循迹小车 读取光电传感器或者摄像头的数据&#xff0c;…...

【设计模式-行为型】访问者模式

一、什么是访问者模式 说起来访问者模式&#xff0c;其实很少用。我一直在思考该用什么样的例子把这个设计模式表述清晰&#xff0c;最近突然想到一个例子也许他就是访问者。港片有过很辉煌的年代&#xff0c;小的时候一直在看港片觉得拍的非常好&#xff0c;而且演员的演技也在…...

上海亚商投顾:沪指冲高回落 大金融板块全天强势 上海亚商投

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一&#xff0e;市场情绪 市场全天冲高回落&#xff0c;深成指、创业板指午后翻绿。大金融板块全天强势&#xff0c;天茂集团…...

docker部署jenkins

环境&#xff1a; centos7.9 jenkins/jenkins:lts-jdk11 1、拉去jenkins镜像&#xff0c;请指明版本号 [rootlocalhost ~]# docker pull jenkins/jenkins:lts 开始拉取 拉取完成 [rootlocalhost ~]# docker pull jenkins/jenkins:lts lts: Pulling from jenkins/jenkins 0a9…...

初阶数据结构:链表(二)

目录 一、前言 二、带头双向循环链表 1.带头双向循环链表的结构 &#xff08;1)什么是带头&#xff1f; (2)什么是双向呢&#xff1f; &#xff08;3&#xff09;那什么是循环呢&#xff1f; 2.带头双向循环链表的实现 &#xff08;1&#xff09;节点结构 &#xff08;2…...

Django实现数据库的表间三种关系

Django实现数据库的表间三种关系 1. 一对多&#xff08;One-to-Many&#xff09;关系示例&#xff1a;关系说明&#xff1a;查询示例&#xff1a; 2. 一对一&#xff08;One-to-One&#xff09;关系示例&#xff1a;关系说明&#xff1a;查询示例&#xff1a; 3. 多对多&#x…...

AI导航工具我开源了利用node爬取了几百条数据

序言 别因今天的懒惰&#xff0c;让明天的您后悔。输出文章的本意并不是为了得到赞美&#xff0c;而是为了让自己能够学会总结思考&#xff1b;当然&#xff0c;如果有幸能够给到你一点点灵感或者思考&#xff0c;那么我这篇文章的意义将无限放大。 背景 随着AI的发展市面上…...

概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础

对于连续型随机变量&#xff0c;分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09;是概率密度函数&#xff08;Probability Density Function, PDF&#xff09;的变上限积分&#xff0c;概率密度函数是分布函数的导函数。 如果我们有一个连续型随机变量…...

OpenHarmony OTA升级参考资料记录

OpenHarmony 作为一个开源分布式操作系统,通过其强大的 OTA(Over-The-Air)升级能力,为开发者和厂商提供了一套灵活而安全的系统升级方案。 OTA升级方式 根据升级包的应用方式,OpenHarmony 的 OTA 升级可以分为两种:本地升级和网络OTA升级。 本地升级 本地升级是将已制作…...

从 Spark 到 StarRocks:实现58同城湖仓一体架构的高效转型

作者&#xff1a;王世发&#xff0c;吴艳兴等&#xff0c;58同城数据架构部 导读&#xff1a; 本文介绍了58同城在其数据探查平台中引入StarRocks的实践&#xff0c;旨在提升实时查询性能。在面对传统Spark和Hive架构的性能瓶颈时&#xff0c;58同城选择StarRocks作为加速引擎&…...

网络知识小科普--5

81、什么是组播路由? 组播路由是一种有针对性的广播形式&#xff0c;将消息发送到所选择的用户组&#xff0c;而不是将其发送到子网上的所有用户。 82、加密在网络上的重要性是什么? 加密是将信息转换成用户不可读的代码的过程。然后使用秘密密钥或密码将其翻译或解密回其…...

【JWT】jwt实现HS、RS、ES、ED签名与验签

JWT 实现 HS、RS、ES 和 ED 签名与验签 签名方式算法密钥类型签名要点验签要点HSHMAC-SHA256对称密钥- 使用 crypto/hmac 和对称密钥生成 HMAC 签名- 将 header.payload 作为数据输入- 使用同一密钥重新计算 HMAC 签名- 比较计算结果与接收到的签名是否一致RSRSA-SHA256公钥 …...

cherry USB 键盘分析

文章目录 cherry USB 键盘分析描述符结构设备描述符配置描述符集合配置描述符接口 1 描述符HID 描述符端点 IN 描述符接口 2 描述符HID 描述符端点 IN 描述符端点 OUT 描述符字符串描述符语言 ID (字符串索引为 0)厂商字符串(字符串索引为 1)产品字符串(字符串索引为 2)HID 报告…...

R语言学习笔记之高效数据操作

一、概要 数据操作是R语言的一大优势&#xff0c;用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作&#xff0c;包括排序、更新、分组汇总等。R数据操作包&#xff1a;data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具&#xff0c;可以实现快…...

高阶C语言|数组名的深度解析(数组名结合sizeof与strlen的详解)

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对C语言感兴…...

Vue3 v-bind 和 v-model 对比

1. 基本概念 1.1 v-bind 单向数据绑定从父组件向子组件传递数据简写形式为 : 1.2 v-model 双向数据绑定父子组件数据同步本质是 v-bind 和 v-on 的语法糖 2. 基础用法对比 2.1 表单元素绑定 <!-- v-bind 示例 --> <template><input :value"text&quo…...

科家多功能美发梳:科技赋能,重塑秀发新生

在繁忙的都市生活中,头皮健康与秀发养护成为了现代人不可忽视的日常课题。近日,科家电动按摩梳以其卓越的性能和创新设计,赢得了广大消费者的青睐。这款集科技与美学于一身的美发梳,不仅搭载了2亿负离子、6000次/分钟的声波振动等前沿技术,更融入了650nm聚能环红光与415nm强劲蓝…...

systemverilog中的force,release和assign

1 assign assign 语句用于为 wire 类型的信号提供连续赋值。它建立了一个驱动源&#xff0c;根据右侧表达式的值持续驱动 wire 信号。 module Example;wire a, b, c;assign c a & b; endmodule 2 force force 用于强制将一个信号的值设定为某个特定值&#xff0c;会覆盖…...

9【如何面对他人学习和生活中的刁难】

我们在学习的过程中&#xff0c;会遇到很多来自于他人的刁难与嘲讽&#xff0c;如果处理不好&#xff0c;这会大大影响我们的心情&#xff0c;从而影响学习的效率 我建议&#xff0c;如果你学习或生活中也遇到了类似的问题&#xff0c;不要去生气&#xff0c;更不要发生冲突&a…...

新项目传到git步骤

1.首先创建远程仓库,创建一个空白项目,即可生成一个克隆URL,可以是http也可以是SSH,copy下这个地址 2.找到项目的本机目录,进入根目录,打开git bash here命令行 3.初始化: git init 4.关联远程地址: git remote add origin "远程仓库的URL" 5.查看关联 git re…...

docker搭建redis集群(三主三从)

本篇文章不包含理论解释&#xff0c;直接开始集群&#xff08;三主三从&#xff09;搭建 环境 centos7 docker 26.1.4 redis latest &#xff08;7.4.2&#xff09; 服务器搭建以及环境配置 请查看本系列前几篇博客 默认已搭建好三个虚拟机并安装配置好docker 相关博客&#xf…...

DDD架构实战第七讲总结:分层模型和代码组织

云架构师系列课程之DDD架构实战第七讲总结:分层模型和代码组织 一、引言 在前几讲中,我们介绍了领域驱动设计(DDD)的基本构造块和生命周期模型中的聚合。本讲将重点讨论如何将这些构造块和代码组织起来,探讨分层架构和六边形模型,以及如何组织代码结构。 二、工厂和资…...

LabVIEW太阳能照明监控系统

在公共照明领域&#xff0c;传统的电力照明系统存在高能耗和维护不便等问题。利用LabVIEW开发太阳能照明监控系统&#xff0c;通过智能控制和实时监测&#xff0c;提高能源利用效率&#xff0c;降低维护成本&#xff0c;实现照明系统的可持续发展。 ​ 项目背景 随着能源危机…...

C# 结构体

总目录 前言 在 C# 编程中&#xff0c;结构体&#xff08;struct&#xff09;是一种非常重要的数据结构&#xff0c;它为我们提供了一种轻量级的存储和操作数据的方式。本教程将带你深入了解结构体的概念、特点、使用方法&#xff0c;以及一些使用结构体的最佳实践。 一、什么…...

C++小病毒-1.0勒索(更新次数:1)

内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作 在C20环境下,并在虚拟机里运行此代码!&#xff0c;病毒带来后果自负! 使用时请删除在main()里的注释,并修改位置至C:\\(看我代码注释)//可以改成WIN Main() #include <iostream> #i…...

RabbitMQ---面试题

常见面试题 1.MQ的作用及应用场景 类似问题&#xff1a;项目什么情况下用到了MQ&#xff0c;为什么要用MQ MQ的主要应用场景&#xff0c;消息队列的应用场景&#xff0c;为什么说消息队列可以削峰 首先MQ是一种用来接收和转发消息的队列&#xff0c;常见的应用常见如下&…...

CSS中相对定位和绝对定位详解

文章目录 CSS中相对定位和绝对定位详解一、引言二、相对定位1、相对定位的概念1.1、代码示例 三、绝对定位1、绝对定位的概念1.1、代码示例 四、相对定位与绝对定位的区别五、使用示例六、总结 CSS中相对定位和绝对定位详解 一、引言 在CSS布局中&#xff0c;定位是一种强大的…...

【深度学习基础】多层感知机 | 权重衰减

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

[cg] 使用snapgragon 对UE5.3抓帧

最近想要抓opengl 的api&#xff0c;renderdoc在起应用时会闪退&#xff08;具体原因还不知道&#xff09;&#xff0c;试了下snapgraon, 还是可以的 官网需要注册登录后下载&#xff0c;官网路径&#xff1a;Developer | Qualcomm 为了方便贴上已经下载好的exe安装包&#x…...

Java 集合框架介绍

Java学习资料 Java学习资料 Java学习资料 在 Java 编程中&#xff0c;集合框架是一个强大且常用的工具&#xff0c;它为存储和操作一组对象提供了统一的体系结构。通过集合框架&#xff0c;我们能够高效地管理数据&#xff0c;提升程序的灵活性和可维护性。 一、集合框架的概…...

【博客之星】2024年度创作成长总结 - 面朝大海 ,春暖花开!

没关系的&#xff0c;大家都会做错选择&#xff0c;会 莫名其妙掉眼泪&#xff0c;走在路上会突然崩溃&#xff0c; 但这并不影响我们去看看晚霞&#xff0c; 再次爱上这个世界。 面朝大海 &#xff0c;春暖花开! about meReviewLife about me 现在我是一名24级计算机类的…...

windows11关闭系统更新详细操作步骤

文章目录 1.打开注册表2.修改注册表内容2.1 新建文件2.2 修改值 3.修改设置 1.打开注册表 winR输入regedit(如下图所示) 2.修改注册表内容 进HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 2.1 新建文件 右侧界面右键即可 2.2 修改值 重命名为如下…...

医学图像分析工具09.1:Brainstorm安装教程

1. 安装前准备 **官方安装包和数据&#xff1a;**https://neuroimage.usc.edu/bst/download.php **官方安装教程&#xff1a;**https://neuroimage.usc.edu/brainstorm/Installation Matlab 版本要求&#xff1a; 有 Matlab&#xff1a; R2009b (7.9) 或更高版本没有 Matlab&…...

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…...

鸿蒙next 自定义日历组件

效果图预览 20250124-113957 使用说明 1.选择日期左右箭头&#xff0c;实现每月日历切换&#xff0c;示例中超出当前月份&#xff0c;禁止进入下一月&#xff0c;可在代码更改 2.日历中显示当前选择的日期&#xff0c;选中的日期颜色可自定义 3.日历中可展示历史记录作为数据…...

Android BitmapShader简洁实现马赛克,Kotlin(二)

Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;二&#xff09; 这一篇 Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;一&#xff09;-CSDN博客 遗留一个问题&#xff0c;xml定义的MyView为wrap_content的宽高&#xff0c;如果改成其…...

MATLAB编写遗传算法【Genetic Algorithm(GA)】求解函数最大值

一、遗传算法基础知识 来自B站视频的笔记&#xff1a; 【超容易理解】手把手逐句带你解读并实现遗传算法的MATLAB编程&#xff08;结合理论基础&#xff09;_哔哩哔哩_bilibili 1、遗传算法 使用“适者生存”的原则&#xff0c;在遗传算法的每一代中&#xff0c;…...

remove和delete应用场景

"Remove" 和 "delete" 都有“移除、去除”的意思&#xff0c;但它们在使用时有一些细微的区别&#xff0c;通常根据上下文来决定使用哪一个。以下是它们的主要区别&#xff1a; 1. Remove "Remove" 是一个相对通用的词&#xff0c;指的是从某个…...

Redis 详解

简介 Redis 的全称是 Remote Dictionary Server&#xff0c;它是一个基于内存的 NoSQL&#xff08;非关系型&#xff09;数据库&#xff0c;数据以 键值对 存储&#xff0c;支持各种复杂的数据结构 为什么会出现 Redis&#xff1f; Redis 的出现是为了弥补传统数据库在高性能…...

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal&#xff0c;选择版本后点击“install”执行安装...

Java 设计模式 二 单例模式 (Singleton Pattern)

单例模式 (Singleton Pattern) 是一种常见的设计模式&#xff0c;属于创建型模式。它的核心思想是确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。通常用于那些需要全局控制的场景&#xff0c;比如配置管理、日志系统、数据库连接池等。 1. 单例模式的…...

golang网络编程

socket编程 socket图解 Socket是BSD UNIX的进程通信机制&#xff0c;通常也称作”套接字”&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄。Socket可以理解为TCP/IP网络的API&#xff0c;它定义了许多函数或例程&#xff0c;程序员可以用它们来开发TCP/IP网…...

kotlin内联函数——takeIf和takeUnless

1.takeIf 当对一个对象调用takeIf时&#xff0c;如果对象满足给定的判断条件&#xff0c;则返回该对象&#xff1b;否则&#xff0c;返回null。因此&#xff0c;takeIf是对单个对象进行过滤的函数。例如&#xff0c; class User {var name: String? nullvar age 99fun set…...

计算机网络 (54)系统安全:防火墙与入侵检测

前言 计算机网络系统安全是确保网络通信和数据不受未经授权访问、泄露、破坏或篡改的关键。防火墙和入侵检测系统&#xff08;IDS&#xff09;是维护网络系统安全的两大核心组件。 一、防火墙 定义与功能 防火墙是一种用来加强网络之间访问控制的特殊网络互联设备&#xff0c;它…...

第38周:猫狗识别 (Tensorflow实战第八周)

目录 前言 一、前期工作 1.1 设置GPU 1.2 导入数据 输出 二、数据预处理 2.1 加载数据 2.2 再次检查数据 2.3 配置数据集 2.4 可视化数据 三、构建VGG-16网络 3.1 VGG-16网络介绍 3.2 搭建VGG-16模型 四、编译 五、训练模型 六、模型评估 七、预测 总结 前言…...

【力扣Hot 100】矩阵1

矩阵置零&#xff1a;1. 开两个数组判断该行/该列是否有0&#xff1b;2. 用第0行/第0列分别判断该列/该行是否有0 螺旋矩阵&#xff1a;记录方向&#xff0c;一直按某方向前进&#xff0c;遇到障碍方向就变一下 1. 矩阵置零 给定一个 *m* x *n* 的矩阵&#xff0c;如果一个元…...

量子编程语言:Qiskit 与 Cirq

在量子计算的领域&#xff0c;开发者已经可以使用一些专门为量子计算设计的编程语言和框架。其中&#xff0c;Qiskit 和 Cirq 是两个非常流行的选择&#xff0c;它们为不同的量子计算机提供编程接口&#xff0c;帮助开发者理解量子电路的设计和执行。 1. Qiskit Qiskit 是 IBM…...