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

【数据结构初阶】二叉树--基本概念

hello!

目录

一、树

1.1  树的概念和结构

1.2  树的相关术语 

1.3  树的表示

1.4  树形结构实际应用场景

二、二叉树

2.1  概念和结构

2.2  特殊的二叉树

2.2.1  满二叉树

2.2.2  完全二叉树

2.3  二叉树的存储结构

2.3.1  顺序结构

2.3.2  链式结构

Relaxing Time!

  ——————————  爱的华尔兹  ——————————


一、树

1.1  树的概念和结构

树是一种非线性数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。树,顾名思义,因为它看起来像一个倒挂的树,也就是说它根朝上,叶朝下。

  • 有一个特殊的结点,称为根节点,根节点没有前驱结点。
  • 除根结点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、...、Tm,其中每一个集合Ti(1<=i<=m)又是一棵结构与树类似的子树。每棵子树的结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。
  • 子树是不能相交的。(如果相交就是图了)。
  • 除了根结点之外,每个结点有且只有一个父结点。
  • 一棵N个结点的树有N-1条边。

【注意】

树形结构中,子树之间不能有交集,否则就不是树形结构。

非树形结构:

1.2  树的相关术语 

父结点/双亲结点:若一个结点含有子结点,则这个结点称为其子结点的父结点;如上图中的A是B的父结点。

子结点/孩子结点:一个结点含有的子树的根结点称为该结点的子结点,;B是A的子结点。

结点的度:一个结点有几个孩子,它的度就是多少;A的度为6,E的度为2。

树的度:一棵树中,最大的结点的度称为树的度;;该树的度为6。

叶子结点/终端结点:度为0的结点称为叶结点;B、C、O、P结点等都为叶子结点。

分支结点/非终端结点(非叶子结点):度不为0的结点;A、D、E等结点。

兄弟结点:具有相同父结点的结点互称为兄弟结点(亲兄弟);M和N为兄弟结点。

结点的层次:从根开始定义起,根为第一层,根的子结点为第二层,以此类推。

树的高度或深度:树中结点的最大层次;上图树的高度为4。

结点的祖先:从根到该结点所经分支上的所有结点;A是所有结点的祖先。

路径:一条从树中任意结点出发,沿父结点到子结点连接,达到任意结点的序列;如,从A到P的路径为:A-E-J-P,H到P:H-D-A-E-J-P。

子孙:以某结点为根的子树中任一结点都称为该结点的子孙。上图中,所有结点都为A的子孙。

森林:由m(m>0)棵互不相交的集合称为森林。

1.3  树的表示

树结构相对线性表更复杂,要存储起来比较麻烦,既要保存值域,又要保存结点和结点之间的关系。实际中树有很多表示方法如:双亲表示法,孩子表示法,孩子双亲表示法以及孩子兄弟表示法等。我们先简单了解一下其中最常用的孩子兄弟表示法

struct TreeNode
{struct Node* child;  //左边开始的第一个孩子结点struct Node* brother;//指向其右边的下一个兄弟结点int data;            //结点中的数据域
}

1.4  树形结构实际应用场景

文件系统是计算机存储和管理文件的一种方式,它利用树形结构来组织和管理文件和文件夹。在文件系统中,树结构被广泛应用,它通过父结点和子结点之间的关系来表示不同层级文件和文件夹之间的关联。

二、二叉树

2.1  概念和结构

在树形结构中,我们最常用的就是二叉树,一棵二叉树是结点的一个有限集合,该集合由一个根结点加上两棵别称为左子树右子树的二叉树组成或者为空。

从图中看出二叉树具备以下特点:

  • 二叉树不存在度大于2的结点(二叉树只存在度为0,1,2);
  • 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树;

【注意】对于任意二叉树都是由以下几种情况复合而成的。

现实中的二叉树

2.2  特殊的二叉树

2.2.1  满二叉树

一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^(k-1),则它就是满二叉树。(结点总数由等比数列求和得出)

满二叉树

2.2.2  完全二叉树

完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。要注意的是满二叉树是一种特殊的完全二叉树

通俗点来讲,假设二叉树层次为k,除了第k层之外,每层结点的个数都达到了最大结点数,第k层结点个数不一定达到最大结点数,完全二叉树结点的顺序是从左到右的。

满二叉树一定是完全二叉树,但是,完全二叉树不一定是满二叉树。

根据满二叉树的特点可知:

  • 若规定根结点的层数为1,则一棵非空二叉树的第i层上最多有2^(i-1)个结点;
  • 若规定根结点的层数为1,则深度为h的二叉树的最大结点数是2^h -1;
  • 若规定根结点的层数为1,具有n个结点的满二叉树的深度h=log2(n+1),log以2为底,n+1为对数。

2.3  二叉树的存储结构

二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。

2.3.1  顺序结构

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费,完全二叉树更适合使用顺序结构存储。

现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统模拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。

2.3.2  链式结构

二叉树的链式存储结构是指,用链表来表示一棵二叉树,,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左右孩子所在的链结点的存储地址。链式结构又分为二叉链和三叉链,当前我们学习一般都是二叉链。后面会学习到三叉链。

至此,二叉树的相关概念学习结束!

完——


Relaxing Time!

  ————————————  爱的华尔兹  ————————————

【爱的华尔兹_俞灏明_高音质在线试听_爱的华尔兹歌词|歌曲下载_酷狗音乐】

我是云边有个稻草人

期待我们的下一次相遇!

相关文章:

【数据结构初阶】二叉树--基本概念

hello&#xff01; 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …...

Pytorch添加自定义算子之(12)-开闭原则设计tensorrt和onnxruntime推理语义分割模型

一、开闭原则 开闭原则是SOLID原则中的一个,指的是尽量使用开放扩展,关闭修改的设计原则。 在C++中如何使用开闭原则导出动态库,可以按照以下步骤进行: 定义抽象基类:定义动态库中的抽象基类,该基类应该封装可扩展的接口。 实现派生类:实现基类的派生类,这些派生类将封…...

第二百零九节 Java格式 - Java数字格式类

Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance…...

LSI-9361阵列卡笔记

背景 要将raid0更改为JBOD直通模式 注意的点是要先将raid模式调整为JBOD之后重启机器&#xff0c;即可 备注&#xff1a;转换过程中硬盘中的数据未丢失。 步骤贴图 refer https://zhiliao.h3c.com/questions/dispcont/123250 https://blog.csdn.net/GreapFruit_J/article/…...

ArcGIS热点分析 (Getis-Ord Gi*)——基于地级市尺度的七普人口普查数据的热点与冷点分析

先了解什么是热点分析 ? 热点分析 (Getis-Ord Gi*) 是一种用于空间数据分析的技术&#xff0c;主要用于识别地理空间数据中值的聚集模式&#xff0c;可以帮助我们理解哪些区域存在高值或低值的聚集&#xff0c;这些聚集通常被称为“热点”或“冷点”&#xff0c;Gi* 统计量为…...

ASIACRYPT 2021

分类文章编号获奖论文1-3后量子密码4-9多方计算10-15物理攻击,泄露和对策16-21理论22-27公钥密码和鉴权密钥交换28-33高级加密和签名34-39对称密钥构建40-46量子安全47-53获奖论文54对称密码分析55-66增强型公钥加密和时间锁难题67-72同态加密和加密搜索73-77NIZK和SNARK78-80…...

C#学习之路day1

目录 一、概念&#xff1a;.net和c# 二、.net发展方向 三、.Net两种交互模式 四、创建项目 五、vs的组成部分 六、我的第一个C#程序 七、多个项目时启动项目的设置 八、注释 九、快捷键 一、概念&#xff1a;.net和c# 1、.net/dotnet :一般指.Net Framework框架&#…...

【安当产品应用案例100集】010-基于国密UKEY的信封加密应用案例

安当有个客户开发了一套C/S架构的软件&#xff0c;Server在云端&#xff0c;Client由不同的用户使用。最初软件设计开发的时候&#xff0c;没有考虑数据安全形势日渐严峻的问题&#xff0c;Server端和Client端直接就建立一个socket连接来进行通信&#xff0c;Server端发出去的数…...

扫码点餐系统小程序功能分析

扫码点餐系统小程序通常具备以下核心功能&#xff1a; 用户界面&#xff1a;提供直观易用的界面&#xff0c;方便用户浏览菜单、选择菜品、查看订单状态等 。菜单展示&#xff1a;展示餐厅的菜单&#xff0c;包括菜品图片、价格、描述等信息 。扫码点餐&#xff1a;用户通过…...

网络安全——基础知识记忆梳理

1. SQL注入攻击 SQL注入攻击是一种常见的网络安全威胁&#xff0c;它利用Web应用程序中对用户输入的数据的不正确处理&#xff0c;攻击者可以在SQL查询中注入恶意代码&#xff0c;从而执行非授权的数据库操作。这种攻击方式可以导致数据泄漏、数据篡改、绕过认证等多种安全问题…...

GitHub开源的轻量级文件服务器,可docker一键部署

文件服务器 介绍安装使用命令使用API调用 介绍 项目github官网地址 Dufs是一款由Rust编写的轻量级文件服务器&#xff0c;不仅支持静态文件服务&#xff0c;还能轻松上传、下载、搜索文件&#xff0c;甚至支持WebDAV&#xff0c;让我们通过Web方式远程管理文件变得轻而易举。…...

Scratch编程深度探索:解锁递归与分治算法的奥秘

标题&#xff1a;Scratch编程深度探索&#xff1a;解锁递归与分治算法的奥秘 在编程的世界里&#xff0c;递归和分治算法以其精妙的逻辑结构和解决问题的能力而著称。Scratch&#xff0c;这款专为儿童和初学者设计的图形化编程工具&#xff0c;是否能够支持实现这样复杂的逻辑…...

使用docker compose一键部署 Portainer

使用docker compose一键部署 Portainer Portainer 是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便地管理Docker环境&#xff0c;包括单机环境和集群环境。 1、创建安装目录 mkdir /data/partainer/ -p && cd /data/partainer2、创建docker…...

js原生模板引擎

在JavaScript中,可以使用模板字符串(template strings)来创建简单的模板。模板字符串是用反引号(`)标识的字符串,其中内嵌表达式使用${}格式。 下面是一个简单的模板函数示例,它接受一个对象作为参数,并使用模板字符串来生成一个HTML字符串。 function createTemplat…...

Java面试题———MySql篇③

目录 1.查询语句执行流程 2.索引的数据结构是什么 3.数据库中的锁有哪些 4.MySQL日志类型 5.MySQL主从复制的流程 6.谈谈你对sql的优化的经验 1.查询语句执行流程 一条查询语句到达MySQL数据库之后&#xff0c;数据库中的各个组件会按照顺序执行自己的任务 首先是连接器…...

ArcGis在线地图插件Maponline(好用版)

ArcGis加载插件&#xff0c;可在线浏览谷歌地图、天地图、高德地图、必应地图等多种&#xff0c;包含街道、影像、标注地图等信息&#xff08;谷歌地图需自备上网手段&#xff09;&#xff0c;免费注册账号即可使用&#xff0c;可加载无水印底图。 与大地2000坐标无需配准直接使…...

Chainlit接入DifyAI知识库接口快速实现自定义用户聊天界面

前言 由于dify只提供了一个分享用的网页应用&#xff0c;网页访问地址没法自定义&#xff0c;虽然可以接入NextWeb/ChatGPT web/open webui等开源应用。但是如果我们想直接给客户应用&#xff0c;还需要客户去设置配置&#xff0c;里面还有很多我们不想展示给客户的东西怎么办…...

《Python编程:从入门到实践》笔记(一)

一、字符串 1.修改字符串大小写 title()以首字母大写的方式显示每个单词&#xff0c;即将每个单词的首字母都改为大写&#xff0c;其他的改为小写。 upper()将字母都改为大写&#xff0c;lower()将字母都改为小写。 2.合并(拼接)字符串 Python使用加号()来合并字符串。这种合…...

Linux入门——06 基础IO

1.什么是当前路径 exe -> /home/lin/Desktop/Linux_learn/fork_learn/test 当前进程执行是磁盘路径下的哪一个程序 cwd -> /home/lin/Desktop/Linux_learn/fork_learn 当前进程的工作目录------》当前进程 1.1当前路径这个地址能改吗&#xff1f; 可以&#xff0c;使…...

未来城市的科技展望

未来城市&#xff0c;‌将是科技与人文深度融合的产物&#xff0c;‌展现出一个全方位智能化、‌绿色生态且可持续发展的全新面貌。‌随着物联网、‌人工智能等技术的飞速发展&#xff0c;‌未来城市的轮廓逐渐清晰&#xff0c;‌它将为我们带来前所未有的生活体验。‌ 在未来…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...