树和二叉树基本讲解

树和二叉树详细讲解 树(Tree)是非线性结构的典型代表。在树型数据结构中,数据元素之间存在一对多的关系。树是由n(n>0)个有限结点组成一个具有层次关系的集合。当n=0时,称为空树。之所以把这些由层次关系的结点集合称之为树,主要是因为其在形状上看起来特别像一棵倒挂的树,即树根朝上,树叶朝下。首先壹哥给出树结构所具备的特点:(1). 树有且仅有一个特定的根(Root)结点。(2). 除了根结点,其余每个结点都有且只有一个直接前驱,这个前驱结点叫父结点(3). 树的每个结点都可以有多个后继,叫做子结点。没有后继的结点称为。 阅读详情

文章中树的概念和二叉树的定义转自二叉查找树(一)之 图文解析 和 C语言的实现

0X01 树的概念

1. 树的定义

树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。

在这里插入图片描述

把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
(01) 每个节点有零个或多个子节点;
(02) 没有父节点的节点称为根节点;
(03) 每一个非根节点有且只有一个父节点;
(04) 除了根节点外,每个子节点可以分为多个不相交的子树。

2. 树的基本术语

若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"。有相同双亲的结点互为"兄弟"。一个结点的所有子树上的任何结点都是该结点的后裔。从根结点到某个结点的路径上的所有结点都是该结点的祖先。

结点的度:结点拥有的子树的数目。
叶子:度为零的结点。
分支结点:度不为零的结点。
树的度:树中结点的最大的度。

层次:根结点的层次为1,其余结点的层次等于该结点的双亲结点的层次加1。
树的高度:树中结点的最大层次。
无序树:如果树中结点的各子树之间的次序是不重要的,可以交换位置。
有序树:如果树中结点的各子树之间的次序是重要的, 不可以交换位置。
森林:0个或多个不相交的树组成。对森林加上一个根,森林即成为树;删去根,树即成为森林。

0X02 二叉树的介绍

1. 二叉树的定义

二叉树是每个节点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。

在这里插入图片描述

2. 二叉树的性质

二叉树有以下几个性质:TODO(上标和下标)
性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。
性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。
性质3:包含n个结点的二叉树的高度至少为log2 (n+1)。
性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。

2.1 性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)

证明:下面用"数学归纳法"进行证明。
(01) 当i=1时,第i层的节点数目为2{i-1}=2{0}=1。因为第1层上只有一个根结点,所以命题成立。
(02) 假设当i>1,第i层的节点数目为2{i-1}。这个是根据(01)推断出来的!
下面根据这个假设,推断出"第(i+1)层的节点数目为2{i}“即可。
由于二叉树的每个结点至多有两个孩子,故"第(i+1)层上的结点数目” 最多是 “第i层的结点数目的2倍”。即,第(i+1)层上的结点数目最大值=2×2{i-1}=2{i}。
故假设成立,原命题得证!

2.2 性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)

证明:在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知,深度为k的二叉树的结点数至多为:
20+21+…+2k-1=2k-1
故原命题得证!

2.3 性质3:包含n个结点的二叉树的高度至少为log2 (n+1)

证明:根据"性质2"可知,高度为h的二叉树最多有2{h}–1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。

2.4 性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

证明:因为二叉树中所有结点的度数均不大于2,所以结点总数(记为n)=“0度结点数(n0)” + “1度结点数(n1)” + “2度结点数(n2)”。由此,得到等式一。
(等式一) n=n0+n1+n2
  另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:n1+2n2。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。
(等式二) n=n1+2n2+1
由(等式一)和(等式二)计算得到:n0=n2+1。原命题得证!

3. 满二叉树,完全二叉树和二叉查找树
3.1 满二叉树

定义:高度为h,并且由2{h} –1个结点的二叉树,被称为满二叉树。

在这里插入图片描述

3.2 完全二叉树

定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。
特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。

在这里插入图片描述

3.3 二叉查找树

定义:二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] <= key[x];如果y是x的右子树的一个结点,则key[y] >= key[x]。
另一种定义:根节点的值大于等于其左子树中任意一个节点的值,小于等于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。
在这里插入图片描述

在二叉查找树中:
(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(03) 任意节点的左、右子树也分别为二叉查找树。
(04) 没有键值相等的节点(no duplicate nodes)。

在实际应用中,二叉查找树的使用比较多。

【数据结构和算法】二叉树详解,动图+实例 ???? 作者:Linux猿 ???? 简介:优快云博客专家????,华为云享专家????,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! ???? 关注专栏:图解数据结构和算法(优质好文持续更新中……)???? ???? 欢迎小伙伴们点赞????、收藏⭐、留言???? 【数据结构和算法】超详细,保姆级,动图详解,就怕你不会,二叉树详解 一、什么是二叉树 二、二叉树遍历 2.1 前序遍历 2.2 中序遍历 2.3 后续遍历 2.4 层次遍历 三、二叉 阅读详情

相关推荐

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

数据结构与算法——树与二叉树篇详解

树型结构是一类重要的非线性结构。树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观世界国是大量存在的,例如家谱、行政组织机构都可用树形象地表示。树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程。

♚焕蓝·未来的博客 5787

手把手教你用Xilinx SelectIO IP核搞定ADS42LB69高速ADC的DDR数据采集(附仿真调试技巧)

本文详细介绍了如何使用Xilinx SelectIO IP核实现ADS42LB69高速ADC的DDR数据采集,包括IP核配置、仿真验证和硬件调试技巧。通过精准的时序控制和实战调试方法,解决高速数据采集中的时序对齐问题,提升系统稳定性和可靠性。特别适合FPGA工程师和高速ADC接口设计者参考。

weixin_42533622的博客 153

树和二叉树详解【数据结构】

二叉树的三种遍历: 1.前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树 2.中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树 3.后序遍历:先遍历左子树,然后遍历右子树,最后遍历根结点

m0_73968621的博客 1042

别再只会调速度了!用STM32的定时器中断精准控制伺服电机转角(避坑指南)

本文详细介绍了如何利用STM32的定时器中断和PWM输出实现伺服电机的精准转角控制,避免常见的速度控制误区。通过硬件配置、脉冲计数逻辑和优化技巧的实战讲解,帮助开发者掌握高精度位置控制方法,适用于工业自动化和机器人控制等场景。

weixin_42531163的博客 414

飞牛NAS+Docker打造私人IPTV直播源:手把手教你部署iptv-api

本文详细介绍了如何在飞牛NAS上通过Docker部署iptv-api,打造私人IPTV直播源。从SSH配置到Docker容器部署,手把手教你实现自动更新直播源、多终端支持的解决方案,适用于Kodi、PotPlayer等播放器,提升家庭娱乐体验。

earth的博客 5580

树、二叉树的基础知识(详细图解)

一、树 (1) 树( Tree )是 n ( n >0)个结点的有限集。 n =0时称为空树。在任意一棵非空树中:有且仅有一个特定的称为根( Root )的结点; (2)当 n >1时,其余结点可分为 m ( m >0)个互不相交的有限集 T 、T2、…………、 Tm ,其中毎一个集合本身又是一棵树,并且称为根的子树( SubTree ),如下图所示。 二、树的结点 (1)结点拥有的子树数称为结点的度(Degree)。 (2)度为0的结点称为叶节点(Leaf)或终端结点;

qq_52253798的博客 4524

OpenClaw使用ClawHub安装skill网络不稳定?Rate limit exceeded报错?试试这个国内高速镜像工具!

使用 ClawHub 安装 Skill 时遇到 🌐 网络不稳、❌ Rate limit 或命令不可用?使用这个镜像工具,轻松解决skill安装问题,⚡

XiaoqiangClub的博客 1260

【二叉树】树是什么?-树和二叉树的基本必会概念讲解

什么是树? 基本重要必会二叉树性质讲解

系统编程、网络编程 1004

PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!

你好,这里是网络技术联盟站,我是瑞哥。PNETLab是一个强大的网络仿真工具平台,全称Packet Network Emulator Tool Lab。它不仅允许用户进行深入的网络实验,还支持社区成员之间的实验室共享。PNETLab致力于为学习者、教师以及网络工程师提供一个全面的实验环境,以便于他们能够在实际部署前测试和验证网络配置和协议。和。这两个部分相辅相成,共同构成了一个全面且灵活的网络仿真生态系统。

网络技术联盟站 4472

【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)

简洁易懂的车牌号识别Python实现(含代码)1、整体思路2、代码详解 1、整体思路 2、代码详解

qq_40784418的博客 9万+

【数据结构】树和二叉树(Tree)

本文章介绍数据结构中的树的基本知识,包括二叉树的表示和实现、树和森林的转换以及遍历规律,且还包含408习题(附有解析)。此外,含有关于二叉树的二叉链表全部具体实现代码。

2201_75475240的博客 1494

STC单片机 普通 I/O 口中断功能介绍和使用

STC32单片机 普通 I/O 口中断功能介绍和使用

perseverance51博客 3048

树和二叉树

本文介绍了树和二叉树的基本概念及其性质。主要内容包括: 树的基本术语定义(根结点、叶子结点、度、层次等)和特征说明。 二叉树的定义及其五种特殊类型(满二叉树、完全二叉树、正则二叉树、扩充二叉树)的详细说明。 二叉树的抽象数据类型定义,包含基本操作接口。 二叉树五条重要性质的详细证明,涉及结点数量、层次关系及完全二叉树的特点等。 二叉树的两种存储结构(顺序存储和链式存储)的实现方法及其适用场景分析。 本文全面系统地阐述了树和二叉树的理论基础,为后续的树结构算法实现和应用奠定了理论基础。

2401_89678770的博客 679

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【数据结构】树和二叉树

二叉树是数据结构中比较难的数据结构之一,树在计算机中的应用也是非常广泛,例如文件系统、数据库查询、图形处理等。树结构的优点是:可以用来表示关系,可以用来存储和查询大量数据,可以用来实现文件管理和数据库管理等功能。接下来,让我们一起去认识并学习树和二叉树!本文的重点是树中的重要概念和二叉树的性质、遍历方式以及基本操作,小伙伴们在学习有关二叉树的内容,一定要画出二叉树,能够帮助我们更好地理解,再去编写代码。

m0_74336101的博客 2071

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据结构:树和二叉树

二叉树的基本概念;二叉树的查找采用递归函数即可进行;二叉树与树和森林转换;二叉树的应用;二叉查找树

qingttqing的博客 1574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【数据结构与算法】树和二叉树

本篇文章将讲到树的基本概念,二叉树的基本概念,二叉树的递归遍历,二叉树的编程,二叉树的非递归遍历。

2301_80035097的博客 1018

树和二叉树(不用看课程)

在树形结构中,我们最常用的就是⼆叉树,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结点加上两棵别称为左子树和右子树的⼆叉树组成或者为空。接下来是出堆,而出堆指的就是删除堆顶数据,当我们直接删除堆顶数据时,会导致堆乱套(后一个位置移动到前一个位置处,堆的底层是顺序表),所以不能直接删除堆顶数据。现实中我们通常把堆(⼀种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,⼀个是数据结构,⼀个是操作系统中管理内存的⼀块区域分段。的结点⼀⼀对应时称 之为完全二叉树。

Lswblue的博客 2319

【数据结构】树和二叉树知识总结

结点之间存在分支关系。结点之间具有层次关系。如果树中的结点数为0,则称为空树。如果树中的结点数大于0,则有且仅有一个特定的结点称为根结点。其余结点可以分为m(m>0)个互不相交的有限集合T1, T2, T3, …, Tm,每个集合又是一棵树,称为根结点的子树(SubTree树是n个结点的有限集合。二叉树是 n (n≥0) 个结点的有限集,它或者是空集 (n=0) ,或者由一个根结点及两棵互不相交的分别称作这个根的左子树和右子树的二叉树组成。特点。

Patrick_yuxuan的博客 1800

数据结构:树和二叉树【超详细】

本篇博客我们来介绍树和二叉树。详细介绍了他们的概念,储存,遍历及其其他相关功能的实现。这里主要对二叉树进行了分析,二叉树的知识点很多也比较复杂,这里对其进行深度剖析,让其简单易懂,只需一篇博客就可带你走进树的内部世界。

Zhihuiguoz的博客 1213

树和二叉树(Java)

树和二叉树(Java) 树 树是重要的非线性数据结构,元素之间存在一对多的关系,直观的看也是以分支关系定义的层次结构,在客观世界中也广泛存在如文件层次结构等。 1.树的定义 树结构 (除了一个称为根的结点外)每个元素都有且仅有一 个直接前趋,有且仅有零个或多个直接后继。树是递归结构 2.树的特点 树的 根结点没有前驱结点 , 除根结点之外的所有结点 有且只有一个前驱结点 。 树中所有结点可以...

weixin_46360473的博客 482
上一篇: AVL树详解(可视化工具)
下一篇: Unity 修改Prefab实例将Transform变为RectTransform
 codingriver
博客等级 码龄8年 93粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值