dw做的网站怎么发布/seo整体优化
树与二叉树
- 1 树的概念
- 1.1 树的简单概念
- 1.2 树的概念名词
- 1.3 树的相关表示
- 2 二叉树的概念
- 2.1 二叉树的简单概念
- 2.1.1 特殊二叉树
- 2.2 二叉树的性质
- 2.3 二叉树的存储结构
1 树的概念
1.1 树的简单概念
树是一种非线性的数据结构,它是由n(n>=0)个有限节点组成的一个具有层次关系的集合。把它称作树是因为它看起来就像一棵倒挂的树,也就是说它的根在上,而叶在下。
- 树有一个特殊的节点,称为根节点,根节点没有前驱节点。
- 除根节点外,其余节点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<=i<=m)又是一棵结构与树类似的子树。这样的每棵子树的根节点有且只有一个前驱,可以有0个或多个后继节点。
- 由此可见,树是递归定义的。
注意:树形结构中,子树之间不能有交集(不能成环),否则就不是树形结构。
除了根节点外,每个节点有且只有一个父节点,所以可以得出:一棵N个节点的树有N-1条边。
1.2 树的概念名词
节点的度:一个节点含有的子树的个数称为该节点的度。如图:A节点的度为3。
叶节点或终端节点:度为0的节点称为叶节点。如图:J、F、K、L、H、I都是叶节点。
非终端节点或分支节点:度不为0的节点。
双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点。如图:A分别是B、C、D的父节点。
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点。如图:B、C、D都是A的子节点。
兄弟节点:具有相同父节点的节点互称为兄弟节点。
树的度:一棵树中,最大的节点的度称为树的度。
节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,依此类推。
树的高度或深度:树中节点的最大层次。如图:树的高度为4。
堂兄弟节点:双亲在同一层的节点互为堂兄弟节点。
节点的祖先:从根到该节点所经分支上的所有节点。如图:A节点是所有节点的祖先。
子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如图:所有节点都是A节点的子孙。
森林:由m(m>0)棵互不相交的树组成的集合称为森林。
1.3 树的相关表示
树形结构相对线性结构就比较复杂了,要存储表示起来也就比较麻烦了。既要保存值域,也要保存节点和节点之间的关系。实际中树有很多种表示方式,如:双亲表示法,孩子表示法,孩子双亲表示法以及孩子兄弟表示法等。但最常用的还是孩子兄弟表示法。
可将上图中树的结构用孩子兄弟表示法转化,如下图所示:
孩子兄弟表示法是用于将任意一棵普通的树转化为二叉树的最有效方法,其节点的结构定义大致如下:
typedef int DataType;
struct Node
{struct Node* _pfirstChild; // 第一个孩子结点struct Node* _pNextBrother; // 指向其下一个兄弟结点DataType _data; // 结点中的数据域
};
2 二叉树的概念
2.1 二叉树的简单概念
一棵二叉树是节点的一个有限集合,该集合:
- 或者为空
- 或者由一个根节点加上两棵别称为左子树和右子树的二叉树组成
从上图可以看出:
- 二叉树不存在度大于2的节点
二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树
所以可得出,对于任意的二叉树都是由以下几种情况组合构成的:
2.1.1 特殊二叉树
- 满二叉树:一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就叫做满二叉树。也就是说,如果一棵树的高度为h,且节点总数为2h−12^h-12h−1,则它就是满二叉树。
- 完全二叉树:完全二叉树是一种效率很高的数据结构。完全二叉树是由满二叉树引出来的。对于高度为h的,有n个节点的树,当且仅当其每一个节点都与高度为h的满二叉树中编号从1至n的节点都一一对应时,才被称之为完全二叉树。要注意的是满二叉树是一种特殊的完全二叉树。
2.2 二叉树的性质
- 若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2(i−1)2^{(i-1)}2(i−1)个节点。
- 若规定根节点的层数为1,则高度为h的二叉树的最大节点数是2h−12^h-12h−1。
- 对于任意一棵二叉树,如果度为0的叶节点个数是n0n_0n0,度为2的分支结点个数是n2n_2n2,则有n0=n2+1n_0=n_2+1n0=n2+1。
- 若规定根节点的层数是1,则具有n个节点的满二叉树的高度:h=log2(n+1)h=log_2(n+1)h=log2(n+1)。
- 对于具有n个节点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的节点有:
若i>0,i节点位置的双亲序号为:(i-1)/2;若i=0,i为根结点序号,无双亲节点。
若2*i+1<n,则 i 节点位置的左孩子序号为:2*i+1(2*i+1>=n时无左孩子)
若2*i+2<n,则 i 节点位置的右孩子序号为:2*i+2(2*i+2>=n时无右孩子)
2.3 二叉树的存储结构
二叉树一般可以使用两种结构进行存储,一种是顺序结构,一种是链式结构。
- 顺序结构存储
顺序结构存储就是使用数组来存储。但数组存储一般只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。实际使用中只有堆(属于完全二叉树)才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一棵二叉树。 - 链式结构存储
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示节点间的逻辑关系。通常的方法是链表中的每个节点由三个域组成:数据域和左右指针域。左右指针分别用来存放该节点左孩子和右孩子所在的链节点的地址。链式结构又分为二叉链和三叉链。简单的一般二叉链就够了,更复杂的数据结构如红黑树等会用到三叉链。
相关文章:

树与二叉树(概念篇)
树与二叉树1 树的概念1.1 树的简单概念1.2 树的概念名词1.3 树的相关表示2 二叉树的概念2.1 二叉树的简单概念2.1.1 特殊二叉树2.2 二叉树的性质2.3 二叉树的存储结构1 树的概念 1.1 树的简单概念 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成的一个具…...

C++回顾(二十五)—— map/multimap容器
25.1 map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。map的…...

7.3 向量的数量积与向量积
🙌作者简介:数学与计算机科学学院出身、在职高校高等数学专任教师,分享学习经验、生活、 努力成为像代码一样有逻辑的人! 🌙个人主页:阿芒的主页 ⭐ 高等数学专栏介绍:本专栏系统地梳理高等数学…...

Qt静态扫描(命令行操作)
Qt静态扫描(命令行操作) 前沿: 静态代码分析是指无需运行被测代码,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌…...

【Hadoop】配置文件
Hadoop 配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认 配置值时,才需要修改自定义配置文件,更改相应属性值 (1)默认配置文件: cd $HADOOP_HOME/share/hadoop common路…...

python进程池
Python进程池是Python标准库中multiprocessing模块提供的一种用于管理进程的方式。它可以使Python程序以并行的方式执行任务,提高程序的运行效率。本篇博客将介绍如何使用Python进程池。 创建进程池 在使用Python进程池之前,我们需要先创建一个进程池对…...

笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据
如果笔记本固态盘数据丢失怎么办?笔记本固态盘怎么恢复数据?下面将为大家详细地介绍一下笔记本固态硬盘数据恢复的三种实用方法,希望对大家有所帮助。一、简单恢复方法笔记本固态硬盘数据删除以后,较为简单直接的恢复方法就是从回…...

堆的结构与实现
堆的结构与实现二叉树的顺序结构堆的概念及结构堆的实现堆的创建向上调整建堆向下调整建堆堆的操作链接二叉树的顺序结构 堆其实是具有一定规则限制的完全二叉树。 普通的二叉树是不太适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树会更适合使用顺…...

Pandas快速入门
Pandas是Python中非常流行的数据处理库之一,它提供了一种简单而强大的方法来处理和分析数据。在本篇文章中,我将向你介绍Pandas的基础知识,以便你可以开始使用它来处理和分析数据。 安装Pandas 首先,你需要安装Pandas。可以通过…...

LVGL学习笔记18 - 表Table
目录 1. Parts 1.1 LV_PART_MAIN 1.2 LV_PART_ITEMS 2. 样式 2.1 设置行列数 2.2 设置单元格字符串 2.3 设置单元格宽度 2.4 设置表格高度和宽度 2.5 设置字符串颜色 2.6 设置边框颜色 2.7 设置背景颜色 3. 事件 4. CELL CTRL 表格是由包含文本的行、列和单元格构…...

嵌入式安防监控项目——html框架分析和环境信息刷新到网页
目录 一、html控制LED 二、模拟数据上传到html 一、html控制LED 简单来说就是html给boa服务器发了一个控制指令信息,然后boa转发给cgi进程,cgi通过消息队列和主进程通信。主进程再去启动LED子线程。 这是老师给的工程。 以前学32都有这工具那工具来管…...

centos安装docker详细步骤
目录 一.前言 1.环境要求2.官网中文安装参考手册 二.安装步骤 1.卸载旧版本2.安装需要的软件包3.设置docker镜像源 1.配置docker镜像源 方式1:官网地址(外国):方式2:阿里云源:2.查看配置是否成功 4.更新yum软件包索引5.可以查看…...

初识HTML、W3C标准、如何利用IDEA创建HTML项目、HTML基本结构、网页基本信息
一、什么是HTML? HTML——Hyper Text Markup Languagr(超文本标记语言) 超文本包括:文字、图片、音频、视频、动画等 目前网页中常用——HTML5 HTML5提供了一些新的元素和一些有趣的新特性,同时也建立了一些新的规则…...

为什么程序员喜欢这些键盘?
文章目录程序员的爱介绍个人体验程序员的爱 程序员是长时间使用计算机的群体,他们需要一款高品质的键盘来保证舒适的打字体验和提高工作效率。在键盘市场上,有很多不同类型的键盘,但是对于程序员来说,机械键盘是他们最钟爱的选择…...

JS中数组去重的几种方法
JS 中有多种方法可以实现数组去重,下面是几种常用的方法:1、使用 Set 去重:Set 数据结构中不能有重复元素,可以将数组转成 Set 类型,再转回数组。let arr [1,2,3,4,5,6,2,3,4]; let uniqueArr [...new Set(arr)]; co…...

Nginx 配置实例-负载均衡
一、实现效果 浏览器地址栏输入地址 http://192.168.137.129/edu/a.html,负载均衡效果,将请求平均分配到8080和8081两台服务器上。 二、准备工作 1. 准备两台tomcat服务器,一台8080,一台8081 (具体操作如下两个链接) Nginx配置实…...

引出生命周期、生命周期_挂载流程、生命周期_更新流程、生命周期_销毁流程、生命周期_总结——Vue
目录 一、引出生命周期 二、生命周期_挂载流程 三、生命周期_更新流程 四、生命周期_销毁流程 五、生命周期_总结 一、引出生命周期 生命周期: 1.又名:生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么:Vue在关键时刻帮我们调…...

C++ STL学习之【vector的使用】
✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 The power of imagination makes us infinite. 想象力的力量使我们无限。 文章目录📘前言📘正文1、默认成员函数1.1、默认构造…...

方差分析与单因素方差分析
研究分类型自变量对数值型因变量的影响。检验统计的设定和检验方法与变量间的方差是否相等有关。 例如研究行业、服务等级对投诉数的影响:如表格中给出4个行业、每个行业有3个服务等级、样本容量为7、观测值为投诉数。则构成一个3维的矩阵。 在上述基础上…...

分布式链路追踪组件skywalking介绍
SkyWalking组件概念 一个开源的可观测平台, 用于从服务和云原生基础设施收集, 分析, 聚合及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统, 甚至横跨多个云平台。SkyWalking 更是一个现代化的应用程序性能监控(Application Performance Monitoring)系统…...

SUBMIT的用法
SUBMIT的用法 一、简介 系统MB52/MB51/MB5B等类似的报表 ,虽然数据很全面,执行效率也够快,但是经常会不满足用户需求(增添字段、添加查询条件等),很多ABAP 会选择去COPY出标准程序,然后去做修改…...

网页基本标签、图像标签、链接标签、块内元素和块元素、列表标签、表格标签
一、网页基本标签 标题标签 段落标签 未写段落标签前,文本没有按照想要的格式排列显示 写段落标签后: 每句都是一段,所以句与句距离比较宽 换行标签 同一段,只是把文字换行,所以比较紧凑 水平线标签 字体样式标签 …...

RxJava操作符变换过程
要使用Rxjava首先要导入两个包,其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0我们在使用rxjava的操作符时都觉得很方便,但是rxjava是怎么实现操作符的转换呢࿰…...

开放平台订单接口
custom-自定义API操作 注册开通 taobao.custom 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secret String 是 调用密钥 api_name String 是 API接口名称(包括在请求地址中&a…...

CDN相关知识点
1、什么是CDN?CDN的作用是什么? CDN(Content Delivery Network,内容分发网络)是一种通过在多个节点上分布内容以提高网络性能、可靠性和可扩展性的网络解决方案。CDN通过在不同的地理位置部署服务器,使用户…...

【论文阅读】注意力机制与二维 TSP 问题
前置知识 注意力机制 见 这篇 二维 TSP 问题 给定二维平面上 nnn 个点的坐标 S{xi}i1nS\{x_i\}_{i1}^nS{xi}i1n,其中 xi∈[0,1]2x_i\in [0,1]^2xi∈[0,1]2,要找到一个 1∼n1\sim n1∼n 的排列 π\piπ ,使得目标函数 L(π∣s)∥xπ…...

[深入理解SSD系列 闪存实战2.1.7] NAND FLASH基本编程(写)操作及原理_NAND FLASH Program Operation 源码实现
前言 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义, 下面先来个热身: 问1. 原理图上NAND FLASH只有数据线,怎么传输地址? 答1.在DATA0~DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从N...

PMP项目管理项目资源管理
目录1 项目资源管理概述2 规划资源管理3 估算活动资源4 获取资源5 建设团队6 管理团队7 控制资源1 项目资源管理概述 项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程,这些过程有助于确保项目经理和项目团队在正确的时间和地点使用正确的资源。…...

程序的编译和链接
程序的编译和链接程序的编译和链接程序的两种环境翻译环境详解编译和链接预处理编译汇编链接运行环境程序的编译和链接 程序的两种环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 …...

Win11的两个实用技巧系列之无法联网怎么办、耳机没声音的多种解决办法
Win11无法联网怎么办? win11安装后设备不能上网的解决办法Win11无法联网怎么办?电脑安装win11系统以后,发现不能上网,连接不上网络,该怎么办呢?下面我们就来看看win11安装后设备不能上网的解决办法Win11安装后&#x…...