数据结构-二叉树及其遍历

news/2024/11/16 20:52:44/
C%A2%E8%BF%8E%E6%9D%A5%E5%88%B0%E6%88%91%E7%9A%84%E3%80%90%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E3%80%91%E4%B8%93%E6%A0%8F%F0%9F%94%86"> 🚀欢迎来到我的【数据结构】专栏🚀
  • 🙋我是小蜗,一名在职牛马。
  • 🐒我的博客主页​​​​​​ ➡️ ➡️ 小蜗向前冲的主页
  • 🙏🙏欢迎大家的关注,你们的关注是我创作的最大动力🙏🙏

C%8D%E5%89%8D%E8%A8%80">🌍前言

本篇文章咱们聊聊数据结构中的树,准确的说因该是只说一说二叉树以及相关的三种递归遍历、三种非递归遍历以及层次遍历。

C%8D%E7%9B%AE%E5%BD%95">🌍目录

C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%9A%E4%B9%89-toc" style="margin-left:0px;">一、二叉树的定义

C%E3%80%81%E7%89%B9%E6%AE%8A%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91-toc" style="margin-left:0px;">二、特殊的二叉树

C%E5%8F%89%E6%A0%91-toc" style="margin-left:40px;">1、满二叉树

C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91-toc" style="margin-left:40px;">2、完全二叉树

C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E5%8F%8A%E4%BB%A3%E7%A0%81-toc" style="margin-left:0px;">三、二叉树的遍历及代码

C%9A-toc" style="margin-left:40px;">示例图:

C%9A-toc" style="margin-left:40px;">前置准备:

1、先序遍历

🫧规则

🫧代码

2、中序遍历

🫧规则

🫧代码

3、后序遍历

🫧规则

🫧代码

C%A1%E9%81%8D%E5%8E%86-toc" style="margin-left:40px;">4、层次遍历

🫧规则

🫧代码

C%80%E7%BB%88%E7%BB%93%E6%9E%9C%EF%BC%88%E6%80%BB%E7%BB%93%EF%BC%89-toc" style="margin-left:40px;">最终结果(总结)


C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%9A%E4%B9%89">一、二叉树的定义

🍃二叉树 (BinaryTree) 是 n (n>0) 个结点所构成的集合,它或为空树(n-0)或为非空树,对于非空树 T:

(1) 有且仅有一个称之为根的结点:

(2) 除根结点以外的其余结点分为两个互不相交的子集 TI 和 T2,分别称为 T 的左子树和右子树,且 T1 和 T2 本身又都是二叉树。
🍃二叉树与树一样具有递归性质,二叉树与树的区别主要有以下两点:

(1) 二叉树每个结点至多只有两棵子树(即二叉树中不存在度大于 2 的结点) ;

(2) 二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有 5 种基本形态:

C%E3%80%81%E7%89%B9%E6%AE%8A%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91">二、特殊的二叉树

C%E5%8F%89%E6%A0%91">1、满二叉树

定义:一棵高度为 h,且含有 2^{h}-1个结点的二叉树称为满二叉树。文字不好理解看图!!!

其实就是每一层都含有最多的结点,除叶子结点外每个结点度都为2。

C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91">2、完全二叉树

高度为h、有n个结点的二叉树,当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点一一对应时,称为完全二叉树。

对比

C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E5%8F%8A%E4%BB%A3%E7%A0%81">三、二叉树的遍历及代码

C%9A">示例图:


http://www.ppmy.cn/news/1547540.html

相关文章

蓝桥杯每日真题 - 第13天

题目:(删边问题) 题目描述(14届 C&C B组F题) 解题思路: 图的构建:使用邻接链表表示图,边的起点和终点分别存储在数组中,以支持高效的遍历。 Tarjan算法&#xff1a…

SQL Server 查询设置 - LIKE/DISTINCT/HAVING/排序

目录 背景 一、LIKE - 模糊查询 1. 通配符 % 2. 占位符 _ 3. 指定集合 [] 3.1 表示否定 ^ 3.2 表示范围 - 4. 否定 NOT 二、DISTINCT - 去重查询 三、HAVING - 过滤查询 四、小的查询设置 1. ASC|DESC - 排序 2. TOP - 限制 3. 子查询 4. not in - 取补集&…

STM32完全学习——F407ZGT6点亮LED

一、寄存器描述 我们想要点亮LED,无非就是对于寄存器的一些设置,主要分为两步,首先是需要打开相应GPIO的时钟,这是因为STM32在上电后,每个外设的时钟默认都是关闭的,需要我们手动打开。其次就是对GPIO的一…

消息中间件分类

消息中间件(Message Middleware)是一种在分布式系统中实现跨平台、跨应用通信的软件架构。它基于消息传递机制,允许不同系统、不同编程语言的应用之间进行异步通信。 常见的消息中间件类型包括: 1. JMS(Java Message S…

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型,它在大规模文本嵌入基准(MTEB 基准)(截至 2024 年 8 月 30 日)的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外,它还在检索子类别中排名第一(…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址:https://github.com/ollama/ollama 这里以window版本为主,下载链接为:https://ollama.com/download/OllamaSetup.exe。 安装完毕后,桌面小图标有一个小图标,表示已安装成功&…

【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑

指标介绍 租户 CPU 使用量 * 100 / 租户 CPU 分配量。 指标参数说明 指标项指标名称单位租户 CPU 消耗ob_tenant_cpu_percent% 计算表达式 sum(rate(ob_sysstat{stat_id"140013",LABELS}[INTERVAL])) by (GBLABELS) / sum(ob_sysstat{stat_id"140005"…

Wxml2Canvas小程序将dom转为图片,bug总结

1.显示文字 标签上面使用 data-type"text" 加上class名 <view data-type"text" class"my_draw_canvas"><text data-type"text" class"center my_draw_canvas" data-text"企业出游证明">企业出游证明…