数据结构——lesson6二叉树基础

news2025/1/16 21:52:33

前言

hellohello~这里是土土数据结构学习笔记🥳🥳
在这里插入图片描述

💥个人主页:大耳朵土土垚的博客
💥 所属专栏:数据结构学习笔记
💥对于数据结构顺序表链表有疑问的都可以在上面数据结构的专栏进行学习哦~感谢大家的观看与支持🌹🌹🌹
有问题可以写在评论区或者私信我哦~

前面我们已经学习过了数据结构中顺序表和链表(都放在数据结构专栏了),今天我们将继续学习数据结构中二叉树有关的知识🥳🥳

💥1.树概念及结构

🎉1.1树的概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。
把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
在这里插入图片描述
类似于倒立的树:
在这里插入图片描述

✨有一个特殊的结点,称为根结点,如上图中的A,根节点没有前驱结点。(根节点在下面介绍)
✨除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继
✨因此,树是递归定义的。

🥳1.2与树有关的概念

如图是树形结构:
在这里插入图片描述

  1. 节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6;

  2. 叶节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点;

  3. 非终端节点或分支节点:度不为0的节点; 如上图:D、E、F、G…等节点为分支节点;

  4. 双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点

  5. 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节点;

  6. 兄弟节点:具有相同父节点的节点互称为兄弟节点; 如上图:B、C是兄弟节点;

  7. 树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6;

  8. 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;

  9. 树的高度或深度:树中节点的最大层次; 如上图:树的高度为4;

  10. 堂兄弟节点:双亲在同一层的节点互为堂兄弟;如上图:H、I互为兄弟节点;

  11. 节点的祖先:从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先;

  12. 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙;

  13. 森林:由m(m>0)棵互不相交的树的集合称为森林;

以上节点的层次不同于数组下标从0开始,它是从1开始便于后续使用,不然不好区分一层节点和没有节点的情况,当然也可以从0开始,数组下标从0开始则是因为*(arr+i)便于计算。

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

在这里插入图片描述

树可以理解为包括两个:一是父节点(前驱节点),另一个是子树。
而子树同样又可以分为父节点和子树
直到找到叶子节点

💫1.3 树的表示

树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。
我们这里简单介绍一些方法:
(1)直接表示

这里我们需要知道树的度,然后直接定义

struct TreeNode
{
	int data;//保存数据
	struct TreeNode* child1;//保存孩子节点的指针
	struct TreeNode* child2;
	//...
}

如果树的度是7,我们则需要定义7个树的指针

(2)双亲表示法

存放双亲也就是父节点的指针或下标即可

struct TreeNode
{
int data;
struct TreeNode* parent;//或者存放下标int parenti;
}

(3)最常用的孩子兄弟表示法

typedef int DataType;
struct Node
{
 struct Node* _firstChild1; // 第一个孩子结点
 struct Node* _pNextBrother; // 指向其下一个兄弟结点
 DataType _data; // 结点中的数据域
};

在这里插入图片描述

🌹1.4 树在实际中的运用(表示文件系统的目录树结构)

在这里插入图片描述

💥2.二叉树概念及结构

🎉2.1概念

一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 由一个根节点加上两棵别称为左子树和右子树的二叉树组成

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

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

二叉树就是树分支要小于等于2即可

🥳2.2现实中的二叉树

在这里插入图片描述

💫2.3 特殊的二叉树

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

满二叉树每个节点都分两个支,直到叶子节点出现;
完全二叉树最后一层要有连续分支,且分支也小于等于2,其他层是满二叉树

2.4 二叉树的性质

1.每个节点最多有两个子节点,分别称为左子节点和右子节点。

2.二叉树的左子树和右子树也是二叉树。

3.则一棵非空二叉树的第i层上最多有 2^(i-1)个结点.

4.若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2^h -1 .

5.若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1)(ps:log是以2为底,n+1为对数)

6.对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:

  1. 若i>0,i位置节点的双亲序号:(i-1)/2;
  2. i=0,i为根节点编号,无双亲节点

可以按照等比数列来理解,等比数列的公比为2,首项为1

💥3.结语

以上就是学习二叉树的基础知识啦,重点部分已经加粗或颜色标注了大概知道二叉树有关的概念,以及理解二叉树的原理与概念即可,后续将会持续学习二叉树有关的编程知识…完结撒花~🥳🥳🎉💖

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

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

相关文章

ping多个IP的工具

Ping Tool 项目地址 python开发的IP搜索小工具 ping一个网段所有IP&#xff0c;显示结果查看某个ip地址开放监听的端口配置可保存

查询IP地址保障电商平台安全

随着电子商务的快速发展&#xff0c;网购已经成为人们日常生活中不可或缺的一部分。然而&#xff0c;网络交易安全一直是人们关注的焦点之一&#xff0c;尤其是在面对日益频发的网络诈骗和欺诈行为时。为了提高网购平台交易的安全性&#xff0c;一种有效的方法是通过查询IP地址…

Java红黑树实现Map简单示例

红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它是由 Rudolf Bayer 在 1972 年提出的&#xff0c;后来由 Leo J. Guibas 和 Robert Sedgewick 在 1978 年发表的论文中形式化定义。 红黑树具有以下特性&#xff1a; 1.节点颜色&#xff1…

java数据结构与算法刷题-----LeetCode653. 两数之和 IV - 输入二叉搜索树

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 前序遍历加hash2. 中序遍历双指针 1. 前序遍历加hash 解题思…

(上海电力展)2024上海国际智慧电力与电气设备展览会

2024上海国际智慧电力与电气设备展览会 2024 Shanghai International Intelligent Power and Electrical Equipment Exhibition 时 间&#xff1a;2024年7月13-15日 地 点&#xff1a;上海新国际博览中心 展会简介Introduction 随着全球进入互联网和数字经济时…

逻辑分析仪分析硬件spi

一&#xff0c;cubemx配置好后&#xff0c;使用spi接口发送数据&#xff1b; 发送5个字节&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff1b; 第1个字节&#xff1a;1&#xff1b; 第2个字节&#xff1a;2&#xff1b; 第3个字节&#xff1a;3&am…

【趣玩一下】StreamDiffusion一秒100张!实时生成二次元老婆照!

源代码 https://github.com/cumulo-autumn/StreamDiffusion 基础原理 首先Stream Batch&#xff0c;是将原来顺序的去噪步骤改为批量化处理。允许在一个批处理中&#xff0c;每幅图像处于去噪流程的不同阶段。 如此一来&#xff0c;可以大大减少UNet推理次数&#xff0c;显著…

基于单片机的医院输液系统设计

目 录 摘 要 Ⅰ Abstract Ⅱ 引 言 1 1系统方案设计与论证 3 1.1系统硬件结构总体设计方案 3 1.2点滴速度测量电路方案的选择与论证 3 1.3液面检测电路方案的选择与论证 4 1.4通过电机控制滴速电路的方案与论证 4 1.5显示器接口电路方案选择与论证 5 1.6键盘接口电路方案选择与…

十:套接字和标准I/O,以及分离I/O流

1 标准I/O函数的优点 C语言标准IO整理 1.1 标准I/O函数的两个优点 标准I/O函数具有良好的移植性。 标准I/O函数可以利用缓冲提高性能 从图中可以看出&#xff0c;使用标准I/O函数传输数据时&#xff0c;经过两个缓冲。例如&#xff0c;使用fputs函数传输字符串 “Hello” 时…

数据分析-Pandas数据的画图设置

数据分析-Pandas数据的画图设置 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&#x…

TypeScript(四)枚举类型(Enum Types),类型别名(Type),运算符

一、枚举类型 使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举。 枚举类型的特点 可以给一组数值取上一个更好理解的名字&#xff1b;一个枚举中只会存在几个固定的值&#xff0c;并不会…

C语言第三十六弹---文件操作(中)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 文件操作 1、文件的顺序读写 1.1、顺序读写函数介绍 1.1.1、fgetc 与 fputc 1.1.2、fgets 与 fputs 1.1.3、fscanf 与 fprintf 1.1.4、fread 与 fwrite 1.…

【vue3之组合式API及其新特性】

组合式API及其新特性 一、setup1.写法2.如何访问3.语法糖4.同步返回对象 二、reactive()和ref()1.reactive()2.ref() 三、computed四、watch函数1.侦听单个数据2.侦听多个数据3. immediate4. deep5.精确侦听对象的某个属性 五、生命周期函数六、组件通信1.父传子2. 子传父 七、…

云消息队列 Confluent 版正式上线!

作者&#xff1a;阿里云消息队列 前言 在 2023 年杭州云栖大会上&#xff0c;Confluent 成为阿里云技术合作伙伴&#xff0c;在此基础上&#xff0c;双方展开了深度合作&#xff0c;并在今天&#xff08;3月1日&#xff09;正式上线“云消息队列 Confluent 版”。 通过将 Co…

基于51单片机心率脉搏计设计

目 录 摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 系统方案设计 3 1.2 系统总体设计 4 2 硬件设计 5 2.1 主控电路 5 2.2 驱动电路 8 2.3 信号采集电路 10 2.4 显示电路 13 2.5 总体电路图设计 15 3 软件设计 16 3.1 软件开发环境的介绍 16 3.2 系统重要函数介绍 16 4…

解决QMYSQL driver not loaded问题

前言 之前都是在Qt5.51上开发&#xff0c;连接mysql数据库一直没有问题&#xff0c;换到5.15.2后一直报错 一查才发现\5.15.2\msvc2019_64\plugins\sqldrivers目录下没有qsqlmysql了&#xff0c;5.5.1是有的&#xff0c;5.15.2是要自己编译的。。。 下载源码 安装qt的时候没…

大型多模态智能体:综述

论文链接&#xff1a;https://arxiv.org/abs/2402.15116 大型语言模型&#xff08;LLMs&#xff09;在推动文本基础的智能体方面已经取得了超群的性能&#xff0c;赋予它们类似人类的决策和推理能力。与此同时&#xff0c;一个新兴的研究趋势集中于将这些LLM驱动的智能体扩展到…

这套系统架构,同事直呼666

你使用的每一个热门应用程序的背后,都有一个由架构、测试、监控和安全措施组成的软件系统。今天让我们看一下满足生产环境应用程序的高级架构由哪些体系组成。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保了我们的代码从存储库出发,经过…

【TOP】中科院1区TOP,Elsevier出版社,仅2-3个月录用!

【SciencePub学术】 01 期刊基本信息 【期刊简介】IF&#xff1a;5.0-5.5&#xff0c;JCR1区&#xff0c;中科院1区TOP&#xff1b; 【版面情况】正刊&#xff0c;仅10篇版面&#xff1b; 【检索情况】SCIE在检&#xff0c;预计3个月左右录用&#xff1b; 【征稿领域】有关…

图机器学习(2)-图的基本表示

0 复习 1 图的基本表示 1.1 本体图Ontology 疾病和食物之间的关系&#xff1a;能吃、不能吃、推荐吃。 1.2 图的种类 药物和药物之间的副作用就是异质图&#xff1a; 二分图是一种特殊的异质图&#xff1a; 1.3 节点连接数 通过节点数可以说明节点的重要度。 1.4 邻接…