数据结构——初识树和二叉树

7922950948a945c2a9d2da741e34f69b.png

线性结构是一对一的关系,意思就是只有唯一的前驱和唯一的后继;

非线性结构,如树形结构,它可以有多个后继,但只有一个前驱;图形结构,它可以有多个前驱,也可以有多个后继。 

77535ac2661b4c6fbdf483d7b69b9fa3.png

 树的定义

308c58020a9647968642d9327ca5bc97.png

 树是由根和子树组成,子树又是由子树的根和子树的子树组成,是一个递归的(嵌套的)结构。

示意图如下:

0c83e258c15b45b7b28b98dc8b45d4b3.png 

 树的其他表现方式

7785158030b743cbbe27c906c8ae10c6.png

 树的基本术语

dd8f6c59ebdb47b4beaa19cb645eede1.png

这个树的根有三个后继结点,每个后继结点只有一个前驱结点。

结点:数据元素以及指向子树的分支。 

根结点:非空树中无前驱结点的结点,一个树当中,只有根节点没有前驱。

结点的度:结点拥有的子树数。

树的度:树内各结点的度的最大值。 上图树的度为3。

度为0的结点称为叶子结点,也叫终端结点。

度不为0的结点称为非终端结点,也叫分支结点。

内部结点:根结点以外的分支结点。

结点的子树的根称为该结点的孩子,该结点称为孩子的双亲。

兄弟结点:有共同双亲的结点。

堂兄弟:双亲在同一层的结点。

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

 结点的子孙:以某结点为根的子树中的任一节点。

 树的深度:树中结点的最大层次。

 2769250943614018b255e67c1f70b8c7.png

有序树:树中结点的各子树从左至右有次序(最左边的为第一个孩子)。

无序树:树中结点的各子树无次序。 

森林:是m(m>=0)棵互不相交的树的集合。

        (1)把根节点删除树就变成了森林。

        (2)一棵树可以看成一个特殊的森林。

        (3)给森林中的各子树加上一个双亲结点,森林就变成了树。

树结构和线性结构的比较

线性结构树结构
第一个元素(无前驱)根节点(无双亲)
最后一个元素(无后继)叶子结点(无孩子)
其他数据元素(一个前驱一个后继)其他结点——中间结点(一个双亲,多个孩子)
一对一一对多

二叉树的定义

 为何要重点研究每结点最多只有两个的树?

  • 二叉树的结构最简单,规律性最强;可以证明,所有树都能转为唯一对应的二又树,不失一般性。
  • 普通树(多又树)若不转化为二又树,则运算很难实现

        二叉树在树结构的应用中起着非常重要的作用,因为对二叉的许多操作算法简单,而任何树

都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。

二叉树是 n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的分别

称作这个根的左子树和右子树的二叉树组成。

特点:

1、每个结点最多有两个孩子(二叉树中不存在度大于2的结点)。

2、子树有左右之分,其次序不能颠倒。

3、二叉树可以是空集合,根可以有空的左子树或空的右子树。

注意:二叉树不是树的特殊情况,它们是两个概念。

二叉树结点的子树要区分左子树和右子树,即使只有一棵树也要进行区分,说明它是左子树还是右子树。

ca1f7303aac7492dad25c248b403fab1.png

(也就是二叉树每个结点位置或者说次序都是固定的,可以是空,但是不可以说它没有位置,而树的结点位置是相对于别的结点来说的,没有别的结点时,它就无所谓左右了)。

b838706ec08049b28237e034abae39c4.png

 二叉树的5种基本形态

 b2751b059d9644429ca294e4da8e6250.png

注:虽然二叉树和树的概念不同,但有关树的基本术语对二叉树都适用。 

二叉树的性质

  1.  在二叉树的第i层上至多有eq?2%5E%7Bi-1%7D个结点
  2. 深度为k的二叉树至多有eq?2%5E%7Bk%7D-1个结点
  3. 对于任何一颗二叉树,如果其终端节点数为n,度为2的节点数为m,则n=m+1

满二叉树:深度为k且含有-1个结点的二叉树,即每i层都有个结点

完全二叉树:深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。

完全二叉树的特点:

(1)叶子结点只可能在层次最大的两层上出现;

(2)对任一结点,若其右分支下的子孙的最大层次为l,则其左分支下的子孙的最大层次必为1或l+1。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类 变电站红外检测数据集 名称 变电站红外检测数据集 (Substation Infrared Detection Dataset) 规模 图像数量:1185张图像。类别:13种设备类型。标注个数:2813个标注。 数据划分…

多模态RAG实现

在标准 RAG 中,输入文档包含文本数据。LLM 利用上下文学习,通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是,如果文档包含图像、表格、图表等以及文本数据,该怎么办? 不同的文档格式包…

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon(禹贡),基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力,提供专业的GIS(Geographic Information System)功能,赋能传统关系型数据库。 Yukon 支…

linux桌面软件(wps)内嵌到其他窗口

程序测试环境是:slackware系统,属于linux系统,有桌面(Xface Session)。系统镜像是:slackware64-15.0-install-dvd.iso。qt、c代码实现。 程序功能:将已经打开的wps(word、pdf等都可…

Android SystemUI组件(09)唤醒亮屏 锁屏处理流程

该系列文章总纲链接:专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明: 说明:本章节持续迭代之前章节的思维导图,主要关注左侧上方锁屏分析部分 唤醒亮屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来…

Watchdog Timers(WDT)

文章目录 1. 介绍2. Feature List3. 概述3.1. Safety Watchdog3.2. CPU Watchdog 4. 看门狗定时器功能5. Endinit Functions5.1 Password Access to WDTxCON05.1.1 Static Password5.1.2 Automatic Password Sequencing 5.2 Check Access to WDTxCON05.3 Modify Access to WDTx…

[C++]使用C++部署yolov11目标检测的tensorrt模型支持图片视频推理windows测试通过

官方框架: https://github.com/ultralytics/ultralytics yolov8官方最近推出yolov11框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov11的tensorrt模型,并最终成功。 重要说明:安装环境视为最基…

Tiny-universe手戳大模型TinyRAG--task4

TinyRAG 这个模型是基于RAG的一个简化版本,我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本,它只包含了RAG的核心功能,即Retrieval和Generation。Tiny-RAG的目的是为了帮助大家更好的理解RAG模型的原理和实现。 1. RAG 介绍 LLM会产…

Halcon基础系列1-基础算子

1 窗口介绍 打开Halcon 的主界面主要有图形窗口、算子窗口、变量窗口和程序窗口,可拖动调整位置,关闭后可在窗口下拉选项中找到。 2 显示操作 关闭-dev_close_window() 打开-dev_open_window (0, 0, 712, 512, black, WindowHandle) 显示-dev_display(…

超级干货:Air780E之RS485通信篇,你学会了吗?

今天,我们来学习低功耗4G模组Air780E的RS485通信,同学们,你学习了吗? 一、RS485简介 物联网(IoT)在工业场景中的应用越来越广泛,而RS485是一种常见的通信协议,广泛应用于工业自动…

快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例

本文作者:胡玉龙,快手技术专家 快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年,快手的数据量已突破800TB大关,其中最大集群的数据量更是达到了数百TB级别。为此,快手将数据…

关于视频监控介入的部分内容,使用的是海康H5web播放的模式

这是原发直接能在系统中使用。里面的样式自己修改&#xff0c;主要是在引入时出现黑色的框就是引入成功&#xff0c;需要在public文件夹中引入h5player.min.js文件就可以。 <template><div class"Shiping"><el-container><el-header><di…

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据&#xff0c;该数据来源于国家青藏高原科学数据中心。为方便大家使用&#xff0c;我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据&#xff08;可查看之前的文章获悉详情&#…

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1&#xff0c;环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2&#xff0c;预备环境 一个比较新的 ubuntu 18.04&#xff0c;为了迎合 cuda 11.01 的版本需求 安装如下软件&#xff1a; sudo apt-get instal…

【Linux】几种常见配置文件介绍

配置文件目录 linux 系统中有很多配置文件目录 /etc/systemd/system /lib/systemd/system /usr/lib/systemd/system 【结果就是这个目录配置文件是源头】 这三者有什么样的关系呢&#xff1f; 以下是网络上找的资料汇总&#xff0c;并加了一些操作验证。方便后期使用 介…

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…

ARM 架构、cpu

一、ARM的架构 ARM是一种基于精简指令集&#xff08;RISC&#xff09;的处理器架构. 1、ARM芯片特点 ARM芯片的主要特点有以下几点&#xff1a; 精简指令集&#xff1a;ARM芯片使用精简指令集&#xff0c;即每条指令只完成一项简单的操作&#xff0c;从而提高指令的执行效率…

进程的创建、多任务及退出

一、创建进程 1、并发与并行 为了提高计算机执行任务的效率&#xff0c;一般采用的解决方案就是能够让多个任务同时进行&#xff0c;可以使用 并发 与 并行两种方式 并行 : 在 cpu 多核的支持下&#xff0c;实现物理上的同时执行 并发 : 在有限的 cpu 核芯的情况下 , …

60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录一、理论知识比喻机器翻译Seq2seq编码器-解码器细节训练衡量生成序列的好坏的BLEU(值越大越好)总结 二、代码编码器解码器损失函数训练预测预测序列的评估小结练习 一、理论知识 比喻 seq2seq就像RNN的转录工作一样&#xff0c;非常形象的比…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL