数据结构——二叉树(2025.2.12)
目录
一、树
1.定义
(1)树的构成
(2)度
2.二叉树
(1)定义
(2)二叉树的遍历
(3)遍历特性
二、练习
1.二叉树
(1)创建二叉树
(2)前序遍历
(3)中序遍历
(4)后序遍历
(5)获取结点个数
(6)获取层数
(7)层序遍历
(8)销毁二叉树
一、树
1.定义
(1)树的构成
①树:树是由n个结点组成的有限集
若n = 0, 则为空树。
②根:树只有一个根结点
除根外,其他所有结点只有一个前驱结点,但可以有多个后继结点。(一对多)
③叶子:叶子结点,即终端结点
只有前驱结点,没有后继结点。
④分支:分支结点,即非终端结点
既有前驱节点,也有后继的结点。
⑤森林:n个互不相交的树的集合。
(2)度
①结点度:子节点(后继结点)的个数
②树的(广)度:树中各结点度的最大值
③深度:从根节点到最底层节点的层数
2.二叉树
(1)定义
①二叉树:任意一个节点的子节点个数不能超过2个(树的度为2),且子节点的位置不可更改。
②满二叉树:在不增加树的层数的前提下,无法再增加一个结点的二叉树
特性:满二叉树第K层有2^(k-1)个节点
K层满二叉树总共有2^k-1个节点
③完全二叉树:只是删除了满二叉树最底层最右边的连续若干个节点,形成了完全二叉树。
在满二叉树的基础上,按照从左向右,从上至下的顺序删除若干个连续的结点,构成完全二叉树;
在满二叉树的基础上,按照从右至左,从下至上的顺序插入若干个连续的结点 ,构成完全二叉树;
满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
满二叉树 ==> 完全二叉树
完全二叉树 =/=> 满二叉树
(2)二叉树的遍历
- 深度优先遍历算法:
①前序遍历:根结点,左子树,右子树 例:ABEHMFDICG
②中序遍历:左子树,根结点,右子树 例:HEMBFAICDG
③后序遍历:左子树,右子树,根结点 例:HMEFBCIGDA
- 广度优先遍历算法:
④层序遍历:从上至下,从左到右,逐层遍历 例:ABDEFIGHMC

(3)遍历特性
已知前序遍历序列和中序遍历序列,可以唯一确定一棵二叉树;
已知后序遍历序列和中序遍历序列,可以唯一确定一棵二叉树;
在编程中,我们常在叶子结点后添上“#”,用作识别终止的标志,等价于NULL。
例如:ABEH##M##F##DI#C##G##

在创建二叉树时,常将每个结点设置成三部分,分别装数据与左右后继结点的地址。
二、练习
1.二叉树
(1)创建二叉树

(2)前序遍历

(3)中序遍历

(4)后序遍历

(5)获取结点个数

(6)获取层数

(7)层序遍历

(8)销毁二叉树

相关文章:
数据结构——二叉树(2025.2.12)
目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...
图神经网络简介
一、说明 本文介绍了GNN网络一些要素,其中与CNN进行过一些对比,并且对GNN的一些统计原理进行介绍。 二、介绍 对于不同类型的训练数据集,卷积神经网络 (CNN) 擅长处理方形或网格状或欧几里得结构化数据,…...
小程序报错The JavaScript function Pointer_stringify(ptrToSomeCString)
小程序报错The JavaScript function Pointer _stringify(ptrToSomeCString) 介绍修改地址总结 介绍 这个报错是我在打包小程序在手机上运行时报的错,这个地方问题是个小问题,其实就是Pointer_stringify(ptrToSomeCString) 函数过时…...
DeepSeek 与网络安全:AI 驱动的智能防御
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着人工智能(AI)的快速发展,深度学习技术正渗透到多个领域,从医疗诊断到…...
Redission看门狗
在 Redisson 中,lock.tryLock() 和 lock.lock() 是两种不同的加锁方式,它们的行为有所不同: lock.lock():这是阻塞方法,当调用时,如果锁当前不可用,线程将被阻塞,直到获取到锁。如果…...
LeetCode 热题 100_组合总和(58_39_中等_C++)(递归(回溯))
LeetCode 热题 100_组合总和(58_39) 题目描述:输入输出样例:题解:解题思路:思路一(递归(回溯)): 代码实现代码实现(思路一(…...
使用PHP爬虫获取1688商品分类:实战案例指南
在电商领域,商品分类信息是商家进行市场调研、选品分析和竞争情报收集的重要基础。1688作为国内领先的B2B电商平台,提供了丰富且详细的商品分类数据。通过PHP爬虫技术,我们可以高效地获取这些分类信息,为商业决策提供有力支持。 …...
Nginx location 和 proxy_pass 配置详解
概述 Nginx 配置中 location 和 proxy_pass 指令的不同组合方式及其对请求转发路径的影响。 配置效果 1. location 和 proxy_pass 都带斜杠 / location /api/ {proxy_pass http://127.0.0.1:8080/; }访问地址:www.hw.com/api/upload转发地址:http://…...
云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现
在新能源汽车越来越普及的今天,充电基础设施的管理和运营变得越来越重要。云创智城充电系统,就像一个超级智能管家,为新能源充电带来了全新的解决方案,让充电这件事变得更方便、更高效、更安全。 一、厉害的技术架构,让…...
AIP-143 标准代号
编号143原文链接AIP-143: Standardized codes状态批准创建日期2019-07-24更新日期2019-07-24 许多常见的概念,如语言、国家、货币等,都有用于数据通信和处理的通用代号(通常由国际标准化组织正式定义)。这些代号解决了在书面语言…...
机器视觉--数字图像格式
图像格式 在数字图像的世界里,不同的图像格式有着各自的特点和适用场景。了解这些图像格式,对于我们在处理图像时选择合适的存储和传输方式至关重要。下面就让我们来详细探讨一下常见的几种数字图像格式。 一、BMP 文件(Bitmap)…...
Kotlin 2.1.0 入门教程(十七)接口
接口 接口可以包含抽象方法的声明,也可以包含方法的实现。 接口与抽象类的不同之处在于,接口无法存储状态。接口可以拥有属性,但这些属性要么必须是抽象的,要么就得提供访问器的实现。 接口使用 interface 关键字来定义&#x…...
渗透测试工具:SQLmap安装教程及使用
在渗透测试的世界里,SQL注入攻击无疑是最常见且最具威胁的安全漏洞之一。幸运的是,SQLmap 这个强大的自动化工具,能够帮助我们快速识别和利用这些漏洞。如果你也想了解如何用 SQLmap 进行渗透测试,那么这篇文章就是为你准备的&…...
4.SpringSecurity在分布式环境下的使用
参考 来源于黑马程序员: 手把手教你精通新版SpringSecurity 分布式认证概念说明 分布式认证,即我们常说的单点登录,简称SSO,指的是在多应用系统的项目中,用户只需要登录一次,就可以访 问所有互相信任的应…...
RocketMQ和Kafka如何实现顺序写入和顺序消费?
0 前言 先说明kafka,顺序写入和消费是Kafka的重要特性,但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性,以及生产者和消费者应该如何配合。 首先,顺序写入。Kafka的消息是按分区追加写入…...
SQL联合查询
文章目录 MySQL系列:1.内连接2.外连接3.自连接4.子查询5.合并查询6.插入查询 MySQL系列: 初识MySQL,MySQL常用数据类型和表的操作,增删改查(CRUD)操作(总),数据库约束数据库设计 #班级表 drop table if exists class; create ta…...
deepseek:三个月备考高级系统架构师
一、备考总体规划(2025年2月11日 - 2025年5月) 1. 第一阶段:基础夯实(2025年2月11日 - 2025年3月10日) 目标:快速掌握系统架构师考试的核心知识点。 重点内容: 计算机组成原理、操作系统、数据…...
支持向量机原理
支持向量机(简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域。如果不考虑集成学习的算法,不考虑特定的训练数据集,尤其在分类任务中表现突出。在分类算法中的表现SVM说是排…...
DeepSeek人工智能AI汽车营销销售培训讲师培训师唐兴通讲课汽车销售大数据存量客户数字化营销数字化销售大模型销售话术引流内容社群私域
唐兴通 数字商业创新实践专家、数字营销与销售顾问 沃顿商学院特邀演讲嘉宾|美国营销协会艾菲奖评委 核心专长: AI商业化应用、数字营销创新、数字新销售能力体系打造、数字化转型、 教学经历:从教20年,执教12所全球顶尖商学院…...
Molecular Communication(分子通信)与 Molecular Semantic Communication(分子语义通信)
1. 引言 随着传统无线通信在极端环境(如微观生物体内、海洋深处)中的局限性凸显,分子通信(Molecular Communication, MC)成为一种新型通信范式。分子通信通过分子作为信息载体,在纳米尺度上传输信息&#…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
