数据结构:树与二叉树

news2024/9/27 21:28:59

1、树的基本概念

1.1树的定义

树是n个结点的有限集。

若n=0,称为空树;若n>0称为非空树,非空树有且仅有一个称之为根的结点。

除根结点以外的其余结点可分成m个互不相交的有限集T1,T2,......Tm,每个有限集合本身又是一棵树,并且称为根的子树。

我们可以根据下面这张图来理解。

根结点:非空树中无前驱结点的结点。图中A就是根结点

结点的度:结点拥有的子树。例如A结点拥有三棵子树,所以它的度为3

深度:树种结点的最大层次,图中的树深度为4

接下来我们介绍各个结点之间的关系:

叶子:也是终端结点,即没有子树的结点

孩子与双亲:一个结点伸出的子树之间的关系

堂/兄弟:同一层次结点的关系

(树的概念可以类比族谱,这样更容易理解)

1.2树的基本术语

树可以分成有序树和无序树:

有序树指的是结点各子树从左至右有序不能互换(例如:二叉树)

无序树中各结点子树可以互换位置。

学习了树的基本知识,下面就引出森林的概念:

如图所示,这是一个再正常不过的树,A是根结点,T1,T2,T3是它的子树。这时如果我们把A结点和B,C,D结点的连接断开,变成下面这个样子,就称为森林:

此时,B,C,D是三棵相互独立的树。

这就是森林,即m棵互不相交的树的集合。

1.3树的其他表示方式

树所包含的逻辑结构还可以用广义表,嵌套集合等形式表示,大家根据图片就可理解。

2、二叉树的基本知识

2.1二叉树的概念

二叉树是一种特殊的树,它只有左子树和右子树。其基本特点如下:

1、结点的度小于等于2

2、是有序树(子树有序,不能颠倒)

我们来看一个例子:具有三个结点的二叉树可能有几种不同形态,普通树呢?

二叉树由于子树有序不能颠倒,所以共有5种形态:

而普通的树是无序的,只用考虑层次,顾只有两种:

 

 2.2二叉树的性质

我们首先介绍两种特殊的二叉树

1、满二叉树:

如图就是一个满二叉树,它具有以下特点:

每层结点数都是最大结点数(每层都满)

叶子结点全部在最底层

每一结点位置都有元素

综上,我们可以很轻松地给出结论,一棵深度为k的满二叉树,它的共有2^k-1个结点。

2、完全二叉树:

我们设完全二叉树有k层,当k-1层是满二叉树,只有最后一层叶子不满,且全部集中在左边时即称为完全二叉树,如图所示:

那么我们再来辨析以下下面呢几棵树哪个是完全二叉树:

我们给出结果,图1是满二叉树,图三是完全二叉树,其余的都不是。

下面我们介绍二叉树最重要的4条性质:

性质1:在二叉树的第i层至多有2^{i-1}个结点

我们可以这样理解:

第一层的结点是根结点,只有一个,所以2^{1-1}= 1。
第二层有两个结点,所以2^{2-1}=2。
第三层有四个结点,所以2^{3-1}=4。

性质2:深度为k的二叉树至多有 2^k-1个结点

同样,这是一个等比数列求和的问题,第一行为2^{0},第二行2^{1},如此类推,最终求和结果就是 2^k-1

性质3:对任意一棵二叉树,如果终端结点数(叶子结点)为0,度为2的结点数为n2,则n0=n2+1

性质4:具有n个节点的完全二叉树深度为⌈log2(n+1)⌉或⌊log2n⌋+1

也可以这样理解2^{i-1}-1<n<2^{i}-1

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 部署 RocketMQ 详细指南

1. RocketMQ 5.3.0 简介 什么是 RocketMQ&#xff1f; Apache RocketMQ 是一个分布式消息中间件&#xff0c;最初由阿里巴巴开发并开源。它基于发布-订阅&#xff08;Pub-Sub&#xff09;模式&#xff0c;具有高性能、低延迟和高可靠性等特点。RocketMQ 支持大规模消息流处理…

Win11怎么把C盘分成几个盘?

很多Windows11用户会发现&#xff0c;系统默认只给电脑分配了一个C盘&#xff0c;而C盘不仅是系统盘&#xff0c;还是软件的默认安装位置&#xff0c;并且个人数据也是保存在C盘。这种情况下&#xff0c;电脑使用时间久了会遇到一个常见问题&#xff1a;C盘空间不足或是需要将C…

elasticsearch文档Delete By Query API(一)

这里的查询需要使用和Search API&#xff08;后文会讲&#xff09;相同的方式来将查询条件作为query的值传递&#xff0c;当然也可以使用q关键字&#xff0c;例如如下请求&#xff1a; curl -X POST “localhost:9200/twitter/_delete_by_query?pretty&quser:kimchy” -H…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文&#xff5c;华为云Flexus X实例docker部署srs6并调优&#xff0c;协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

六西格玛项目:从定义问题到控制成果,全程无忧——张驰咨询

什么是六西格玛项目 六西格玛项目是一种旨在通过改善企业质量流程管理&#xff0c;以“零缺陷”的完美商业追求&#xff0c;带动质量大幅提高、成本大幅度降低&#xff0c;最终实现企业财务成效的提升与企业竞争力的突破的管理策略。它由摩托罗拉公司的工程师比尔史密斯于1986…

文心一眼 4.0Turbo 免费领取5天体验卡

注&#xff1a;这个是官方的活动&#xff0c;目的在于用户推广&#xff0c;任何账号点击连接都可以领取&#xff0c;被分享者领取5天&#xff0c;分享者获得3天&#xff0c;上限320天。 官方活动跳转地址如下&#xff1a;​​​​​​点击这里 跳转后登录&#xff0c;完成一次…

浅析前端数据埋点监控:用户行为与性能分析的桥梁

在数字化时代&#xff0c;数据是企业决策的重要依据。前端作为用户与产品交互的第一线&#xff0c;其数据埋点监控不仅能够收集用户行为数据&#xff0c;帮助产品团队洞察用户需求&#xff0c;优化用户体验&#xff0c;还能分析性能数据&#xff0c;确保产品运行的流畅性。 简单…

LLM常见问题(思维链变体部分)

1. 为什么需要思维树 Tree of Thoughts&#xff08;TOT&#xff09;&#xff1f; 对于需要探索或预判战略的复杂任务来说&#xff0c;传统或简单的提示技巧是不够的。ToT 维护着一棵思维树&#xff0c;思维由连贯的语言序列表示&#xff0c;这个序列就是解决问题的中间步骤。使…

【计算机组成原理】你敢相信5.8+0.9=6.1这个等式居然成立!!!详细解读进制数之间的相互转换

进位计数制及其相互转换 导读一、进位计数法1.1 基数1.2 位权 二、不同进制数之间的相互转化2.1 转化方法2.2 任意进制转化成十进制2.3 十进制转化成任意进制2.4 二进制、八进制以及十六进制之间的相互转换2.4.1 二进制与八进制以及十六进制之间的关系2.4.2 二进制数与八进制数…

【C++】C++中的关键字:const、mutable、auto、new....

七、C中的关键字&#xff1a;const、mutable、auto、new、 本部分打算是尽量多的罗列出C中的关键字和一些花式操作。先总结一下我们之前讲过的&#xff1a;private、public、protect: 参考【C】类、静态、枚举、重载、多态、继承、重写、虚函数_静态与多态:重写、重载、模板-C…

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具 MogDB数据库是云和恩墨基于openGauss开源数据库打造&#xff0c;安稳易用的企业级关系型数据库。 PTK是云和恩墨出品的一款工具&#xff0c;帮助用户更便捷地部署管理MogDB数据库。 1.1 使用场景 开发人员快速启动多个本地 MogDB 环境用户通过 PTK 快速安装…

(2)Django生产环境数据库的切换以及环境配置python-dotenv方案

简介 本文分享下个人目前在用的&#xff0c;DRF项目开发环境、生产环境数据库切换的方案。没做过什么大项目&#xff0c;可能实现的不是那么优雅。 主要思路就是通过python-dotenv库&#xff0c;编辑.env环境配置文件区分开发环境和生产环境&#xff0c;再使用数据库路由&…

IP 协议详解

一、认识 IP 地址与网络层的职责 网络层是OSI七层模型中的第三层&#xff0c;也是TCP/IP四层模型中的网络接入层。在这一层&#xff0c;数据包被封装并加上IP层的头部信息&#xff0c;以便在网络之间传输。网络层的主要功能包括路由选择、分段与重组、拥塞控制以及IP地址管理等…

深度学习--机器学习相关(2)

1.适 应 性 矩 估 计 适应性矩估计(Adaptive Moment Estimation,Adam)是一种可以代替传统的梯度下降 (SGD 和 MBGD) 的优化算法。Adam算法结合了适应性梯度算法和均方根传播的优点。 Momentum 在学习机器学习时是很可能遇到的&#xff0c;是动量的意思。动量不是速度和学…

智能提醒助理系列-AIGC模型如何对接公众号2-扣子

本系列文章记录“智能提醒助理”wx公众号 建设历程。 一、需求出发点 在公众号中对接上大模型。 二、实现路径分析 上次使用直接调用火山引擎大模型的方案&#xff1a;智能提醒助理系列-AIGC模型如何对接公众号 近期 跟朋友跟朋友交流的过程中发现&#xff0c;通过扣子制作…

一招制胜!掌握 Python 中pip的8个必备命令

在Python编程中&#xff0c;pip 是一个非常重要的工具。它是Python包管理器&#xff0c;帮助你安装、更新、删除和管理Python软件包。如果你想要轻松地使用第三方库&#xff08;比如requests、numpy、pandas&#xff09;&#xff0c;就离不开pip。 什么是 pip&#xff1f; pip…

Midjourney提示词——黑神话悟空角色生成提示词!

应广大群友和粉丝要求&#xff0c;我们也来盘一盘最近大火的黑神话悟空的提示词。 这里给大家准备了一份关于AI绘画详细的资料包&#xff0c;扫描下方二维码皆可获取&#xff01; 1号齐天大圣 The full-body portrait of the Monkey King in-game, clad in intricate war rob…

Java运行环境的下载、安装、配置与运行

一、实验目的及要求 目的&#xff1a;掌握如何下载java JDK软件包&#xff0c;如何设置Java程序的运行环境&#xff0c;如何编写与运行Java程序&#xff0c;了解Java概貌。 要求&#xff1a; 1、安装Java JDK软件包&#xff1b; 2、练习编写简单的Java Application程序并掌握…

2.5 SQL注入之文件读写

SQL注入之文件读写 文件读写注入的原理 就是利用文件的读写权限进行注入&#xff0c;它可以写入一句话木马&#xff0c;也可以读取系统文件的敏感信息。 文件读写注入的条件 高版本的MYSQL添加了一个新的特性secure_file_priv&#xff0c;该选项限制了mysql导出文件的权限 …

步进、闭环、交流伺服三类电机驱动方案对比

1、步进、闭环、交流伺服产品对比 2.4步进电机特点 低速力矩大&#xff0c;转矩会随着转速的提高而降低&#xff0c;一般在800rpm以上力矩下降加快&#xff0c;精度是步距角的3%~5%&#xff0c;整圈没有累积误差&#xff0c;两相混合步进电机精度为0.18&#xff1b;步进电机采…