[软考]之树和二叉树

简介: [软考]之树和二叉树

 对于具有层次的数据,需要用树形结构来描述,那么什么是树,树应该如何表示使用呢?下面,就随着这篇博文,来感受一下树的魅力吧。


树的基本组成:


关于树的基本组成,先来看一下定义:


树(tree)是包含n(n>0)个结点的有穷集,其中:


          (1)每个元素称为结点(node);


          (2)有一个特定的结点被称为根结点或树根(root)。


          (3)除根结点之外的其余数据元素被分为m(m≥0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树(subtree)。


       我在网上找了几张表示树的图,大家可以看一下,帮助理解:



 说完了树,顺便提一下森林,森林是m(>=0)棵互不相交的树的集合,树的每个结点的子树是森林,删除一个非空树的根结点,它的子树便构成森林,比如上图中的3号树,将它的根A删除,那么以B为根和以C为根的两棵互不相交的树便构成了森林。


树的相关术语:


        对于树,我们有一些比较专业的叫法来称呼它的各个部位,比如结点的度,叶子,树的度等等,下面仍旧用一张图来表示:



二叉树


  我们所说的二叉树,就是树的一中特殊结构,即由一个根及两棵互不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树,简而言之,任何一个结点的孩子,都不超过两个。二叉树有5个性质,即:


         1.在二叉树的第i层上最多有2 i-1 个节点 。


         2.二叉树中如果深度为k,那么最多有2k-1个节点。


         3.n0=n2+1  n0表示度数为0的节点 n2表示度数为2的节点。


         4.在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]+1是向下取整。


         5.如果有一颗有n个节点的完全二叉树的节点按层次序编号,对任一层的节点i(1<=i<=n)有


             1.如果i=1,则节点是二叉树的根,无双亲,如果i>1,则其双亲节点为[i/2],向下取整  


             2.如果2i>n那么节点i没有左孩子,否则其左孩子为2i


             3.如果2i+1>n那么节点没有右孩子,否则右孩子为2i+1


       二叉树也分为几种类型,分别为:满二叉树,完全二叉树和非完全二叉树,我们直接上图来看:



满二叉树即满足深度为K且有2^K-1个结点。完全二叉树是从满二叉树的结构来判断的,即:一颗深度为k二叉树,有n个节点,然后,也对这棵树进行编号,如果所有的编号都和满二叉树对应,那么这棵树是完全二叉树。附图一张:



 这就是树和二叉树的基本概念和组成标准了,下面一篇博文我们会讨论对于二叉树的遍历和一些计算,未完待续哦~

相关文章
|
Kubernetes 负载均衡 应用服务中间件
k8s学习-Ingress(安装、模板、创建、删除)
k8s学习-Ingress(安装、模板、创建、删除)
815 0
|
计算机视觉 Python
Jetson 学习笔记(六):cv2调用CSI摄像头(jetson nx/nano)、打开海康摄像头、打开电脑摄像头
这篇文章介绍了在不同平台上接入并显示摄像头视频流的方法,包括海康摄像头的RTSP连接、电脑内置摄像头的直接读取、Jetson NX/Nano通过CSI接口和USB接口的操作,以及Jetson Nano通过Gstreamer管道和jetcam库的使用,并提供了相应的代码示例。
1733 1
|
人工智能 并行计算 测试技术
从商业海报到二次元插画多风格通吃!HiDream-I1:智象未来开源文生图模型,17亿参数秒出艺术大作
HiDream-I1是智象未来团队推出的开源图像生成模型,采用扩散模型技术和混合专家架构,在图像质量、提示词遵循能力等方面表现优异,支持多种风格生成。
1356 2
从商业海报到二次元插画多风格通吃!HiDream-I1:智象未来开源文生图模型,17亿参数秒出艺术大作
|
8月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
57698 11
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
存储 监控 前端开发
Sentry 监控部署与使用(详细流程)
Sentry 监控部署与使用(详细流程)
15358 1
|
Unix C语言 C++
Python调用C/C++
Python调用C/C++
1115 2
|
应用服务中间件 nginx
ThreeJs导入外部3D模型
这篇文章详细介绍了如何在Three.js中导入并显示外部的3D模型,包括所需的准备工作和具体实现步骤。
1846 0
|
Java API 网络架构
Spring Cloud Gateway的高级配置与实践
Spring Cloud Gateway的高级配置与实践
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution
本专栏介绍的DSCNet采用蛇形动态卷积,增强对管状结构特征提取,尤其适合血管等弯曲目标。动态卷积核自适应调整,灵感来自蛇形曲线,能灵活捕捉不同尺度细节。论文及官方代码链接已提供,适用于提升目标检测的准确性和鲁棒性。

热门文章

最新文章