【数据结构入门指南】二叉树

二叉树实例 二叉树实例代码,包括插入,遍历,查找,和删除等操作。 立即下载


在这里插入图片描述


一、二叉树的概念

二叉树是一棵特殊的树。一棵二叉树是结点的一个有限集合,该节点:
①:或者为空。
②: 由一个根节点加上两棵别称为左子树和右子树的二叉树组成。


在这里插入图片描述


从上图可以看出:

  1. 二叉树不存在度大于2的结点.
  2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树。

Tips:对于任意的二叉树都是由以下几种情况复合而成的:
在这里插入图片描述


二、现实中的二叉树

在这里插入图片描述


三、特殊的二叉树

① 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2^k -1,则它就是满二叉树。
 
②完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。

在这里插入图片描述


四、二叉树的性质

①: 若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有2(i-1)个结点。
②: 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2h-1。
③: 对任何一棵二叉树, 如果度为0其叶结点个数为n0 , 度为2的分支结点个数为n2,则n0 = n2 +1。
④: 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1)。
⑤:对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:

  1. 若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点。
  2. 若2i+1<n,左孩子序号:2i+1,2i+1>=n否则无左孩子。
  3. 若2i+2<n,右孩子序号:2i+2,2i+2>=n否则无右孩子。

五、二叉树的存储结构

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

5.1 顺序结构

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费,/font.。而现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。

在这里插入图片描述


5.2 链式结构

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

在这里插入图片描述
在这里插入图片描述

typedef int BTDataType;
// 二叉链
struct BinaryTreeNode
{struct BinTreeNode* _pLeft; // 指向当前节点左孩子
 struct BinTreeNode* _pRight; // 指向当前节点右孩子
 BTDataType _data; // 当前节点值域
}
// 三叉链
struct BinaryTreeNode
{
 struct BinTreeNode* _pParent; // 指向当前节点的双亲
 struct BinTreeNode* _pLeft; // 指向当前节点左孩子
 struct BinTreeNode* _pRight; // 指向当前节点右孩子
 BTDataType _data; // 当前节点值域
}

在这里插入图片描述
在这里插入图片描述

hspice2016安装教程 试装系统:win10 64bit 安装包路径和安装路径最好都不要出现中文,一般选择默认安装在C盘。 1.解压安装包压缩文件。 2.以管理员身份运行hspice_vL-2016.03-2_win.exe。 3.点击“Next”。 4.选择“I accept”,然后点击“Next”。 5.点击“Next”。 6.一般默认安装路径即可,然后点击“Next”。 7.点击“Next”. 8.点击“Next”。 9.正... 阅读详情

相关推荐

WPS JS宏实战:批量调整200个Word表格格式的避坑指南(附完整代码)

本文提供了一份详尽的WPS JS宏实战指南,针对批量调整大量Word表格格式的需求。文章深入解析了如何利用JS宏自动化设置字体、行距和边框,并重点解决了常见的“首行访问报错”等核心难题,附有可直接使用的完整代码,帮助用户显著提升文档处理效率。

weixin_29280219的博客 428

小朋友看了都会的二叉树,你确定不来看看吗?

努力的程序员会在梦中敲代码, 所谓人在床上躺,技术自然涨, 这一期将带你走入梦一般的编程, 内容抽象,请备好枕头。

拼命阿紫冲冲冲! 1万+

Crawl4AI实战:5分钟搞定电商价格监控爬虫(附Python代码)

本文详细介绍了如何利用开源AI网络爬虫框架Crawl4AI快速构建电商价格监控系统。通过Python实战代码,展示了从环境配置、智能内容提取到多平台适配、定时任务与数据可视化的完整流程,帮助运营人员和技术开发者高效实现自动化价格追踪与竞品分析。

weixin_29090917的博客 412

哇! 二叉树

二叉树 提到二叉树,那我们就不得不说一下什么是二叉树了,正如标题所说,两个叉的树。。。。 概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 二叉树的特点: 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 二叉树的子树有左右之分,其子树的次序不能颠倒。 现实生活中的二叉树 对的没错,这就是我们现实生活中的二叉树。。。...

zhangxu 378

WindTerm 安装使用教程

WindTerm是一款Github上开源的 SSH 终端工具,它是完全可以比肩MobaXterm工具的。

m0_69576880的博客 4007

CAD文件转换避坑指南:Inventor导出STP时这些设置千万别忽略

本文深入解析了使用Autodesk Inventor导出STP文件时的关键设置与避坑指南。重点探讨了应用协议选择、样条曲线拟合精度对几何保真度的影响,以及装配体结构和元数据的保全策略,旨在帮助用户实现高质量、零误差的CAD数据交付,避免下游软件打开时出现特征丢失或曲面破碎等问题。

weixin_29214559的博客 517

二叉树的介绍及二叉树的链式结构的实现(C语言版)

二叉树是一种特殊的树,它最大的度为2,每个节点至多只有两个子树。它是一种基础的数据结构,后面很多重要的数据结构都是依靠它来进行实现的。了解并且掌握它是很重要的。

m0_68641696的博客 1195

RK3588与FocalTech触摸屏代码适配全解析:从原理到实战

摘要:本文详细介绍了瑞芯微RK3588处理器与FocalTech触摸屏的适配过程,包括硬件特性、驱动加载、设备树配置和常见问题解决方案。RK3588作为8nm工艺的高性能处理器,具备强大的计算能力和丰富的接口资源;FocalTech触摸屏则采用电容式技术,支持I2C/SPI接口。适配关键步骤包括驱动程序加载、硬件连接检查、设备树配置和内核版本兼容性处理,并提供了代码示例和问题排查方法。随着嵌入式设备智能化发展,该适配技术将持续优化,为智能交互提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 272

二叉树,满二叉树,真二叉树

树形结构 这是我们最熟悉的线性结构,线性结构的数据简单来说就是一条线,串起来一个个的节点。 那树形结构是怎样的呢?很明显,顾名思义,它是一棵树的样子。 将这棵树进行180度大翻转,就成了数据结构中的树形结构了 可以初步看出,二叉树就是每个节点要么没有分枝,要么就是分两根枝,而多叉树的每个节点可以有任意的分枝。 生活中的树形结构 文件夹的管理就是我们生活中最常见的树形结构 如下图就是上图文件夹组织形式的树化形式,可以看出我,文件夹的管理是一棵多叉树,一个文件夹下可以有很多子文件夹。 将文件归类,易于

weixin_45638349的博客 962

uniapp [全端兼容] - 实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)天地图切换视图显示改成卫星风格,切换地图图层

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,天地图,视图,卫星,地图类型切换,uniAPP天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,VUE3引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue3卫星天地图,能改地图的显示方式,vue3中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue3安装集成天地图详细示例源

🏆 前端领域优质创作者 1万+

AutoSAR系列讲解 - 总目录

博主想在开始前先讲一下我们的具体安排,这里就以目录加说明的形式展示出来,同时这也可以作为大家学习AutoSAR的参考。由于实践篇需要在很久以后才会更新,所以这里我们先罗列一下理论篇的内容,实践篇等开始更新的时候我再补充上

雪云飞星的博客 49万+

二叉树的实际应用(应用场景)

哈夫曼编码,来源于哈夫曼树(给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为赫夫曼树(Huffman tree)。即带权路径长度最短的树),在数据压缩上有重要应用,提高了传输的有效性,详见《信息论与编码》。 海量数据并发查询,二叉树复杂度是O(K+LgN)。二叉排序树就既有链表的好处,也有数组的好处,在处理大批量的动态的数据是比较有用。 ...

心向暖的博客 3万+

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

OSPF的7种状态,DR与BDR的基本概念,1、2、3、4、5、7类LSA解析,Stub、NSSA、Totally Stub、Totally NSSA的基本概念与配置

weixin_72194028的博客 3007

二叉树入门指南:从零开始理解树形数据结构

本文介绍了二叉树数据结构的基础知识和实现方法。二叉树是一种每个节点最多有两个子节点的非线性数据结构,在数据库索引、文件系统、机器学习等领域有广泛应用。文章详细讲解了二叉树的实现步骤,包括节点结构定义、初始化、基本操作(添加、删除、修改、查找节点)以及三种遍历方式(前序、中序、后序)。通过C++代码示例展示了如何构建二叉树类,包含完整的成员函数实现和相关注释。本文为初学者提供了二叉树数据结构的入门指南,适合需要理解树形数据结构的开发者和计算机科学学习者。

2401_86233678的博客 119

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据结构入门指南:二叉树

在计算机科学中,数据结构是解决问题的关键。而二叉树作为最基本、最常用的数据结构之一,不仅在算法和数据处理中发挥着重要作用,也在日常生活中有着丰富的应用。无论是搜索引擎的索引算法、文件系统的组织方式,还是编译器的语法分析,二叉树都扮演着不可或缺的角色。为了便于大家更好的入门二叉树,本期先向大家简单介绍一下二叉树的基本性质,以及代码理解实现,给大家预预热。

2202_75605090的博客 3313

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

二叉树数据结构入门指南

无需安装任何环境,直接在线创建和运行二叉树演示项目。平台内置代码编辑器和实时预览功能,特别适合数据结构的学习和实践。想快速体验二叉树操作?

ThunderstormDragon65的博客 422

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【数据结构入门指南】二叉树链式结构的实现(保姆级代码思路解读,非常经典)

设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。其他数据结构不同,二叉树的增删查改接口实现的意义不大(后续搜索树的增删查改才有意义)。所谓二叉树遍历(Traversal)是按照某种特定的规则,依次对二叉树中的节点进行相应的操作,并且每个节点只操作一次。【代码思路】:(核心思想:上一层出时带下一层进队列,即根节点出栈时,根节点的孩子节点入栈)

Zhenyu_Coder的博客 8522

数据结构入门指南(C语言版)

数据结构简单案例和解释,适合有一定C语言基础的人阅读入手数据结构

Autovy blog 1593

二叉树的基本概念

二叉树的基本概念一、树概念及结构1.1树的概念1.2 树的相关概念二、二叉树概念及结构2.1概念2.2 特殊的二叉树2.3 二叉树的性质 一、树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点,称为根结点,根节点没有前驱结点 除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合 Ti(1<= i

weixin_64181464的博客 1336

计算机专业知识【小白也能懂的二叉树入门指南】

想象一下你在玩家族族谱游戏,每个人最多有两个孩子,一个是大儿子,一个是小儿子(当然也可以只有一个孩子或者没有孩子)。把每个人当作一个节点,整个家族的这种关系结构就有点像二叉树。在计算机科学里,二叉树是一种树形的数据结构,每个节点最多有两个子节点,通常被称作“左子节点”和“右子节点”。就像家族里每个长辈最多有两个孩子一样。根节点就像是家族的老祖宗,从根节点开始,不断向下延伸出子节点,形成一个树状的结构。

一勺菠萝丶的博客 456

【数据结构】二叉树之入门,树与二叉树的相关介绍

二叉树的入门介绍,介绍了树与二叉树的相关内容

2301_80191662的博客 1822

【数据结构】初识二叉树(二叉树的入门知识)

【数据结构】初识二叉树(二叉树的入门知识)

一点一点变好 2145

【数据结构入门】二叉树(1)

二叉树的概念、常用公式;相关题目、结论推导、二叉树的存储

欢迎来到我的博客,有问题可以联系:luoshuaishuai2001@163.com 1064

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

鲸饮未吞海,剑气已横秋。

hsy1603914691的博客 2793

【数据结构入门】二叉树之堆排序及链式二叉树

堆排序是一种使用堆数据结构的排序算法。堆是一种完全二叉树,且满足堆属性,即每个节点的值都大于(或小于)它的子节点的值。 二叉树的遍历有三种方式:前序遍历、中序遍历、后序遍历。这三种遍历方式都是深度优先遍历。

KevinRay_0854的博客 1363

数据结构入门——二叉树

本文系统介绍了二叉树的概念、实现及应用。主要内容包括:1.树与二叉树的基本概念,如度、层次、遍历方式等;2.二叉树的顺序存储结构(堆)及其实现,包含插入删除的调整算法和堆排序;3.二叉树的链式存储结构,重点讲解前中后序三种递归遍历方式及层序遍历实现;4.二叉树相关算法,如结点统计、高度计算、查找等;5.二叉树的创建和销毁方法。文章通过图示和代码示例详细阐述了核心算法,如堆排序、TopK问题求解等,并强调了递归在二叉树操作中的重要性。

SccTsAxR的博客 938
上一篇: 【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)
下一篇: 【数据结构入门指南】二叉树链式结构的实现(保姆级代码思路解读,非常经典)
小白debug~
小白debug~ 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
博客等级 码龄4年 3510粉丝 128原创
评论 155
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白debug~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值