当前位置: 首页 > article >正文

数据结构--二叉树知识讲解

一、树1.**树的概念与结构 **树是一种非线性的数据结构它是由n(n ≥ 0)个有限结点组成的、具有层次关系的集合。当n 0时称为空树。当n 0时有且仅有一个特殊结点称为根结点Root。除根结点外其余结点可分为m(m ≥ 0)个互不相交的有限集合每个集合本身又是一棵树称为根的子树⼦树是不相交的除了根结点外每个结点有且仅有⼀个⽗结点⼀棵N个结点的树有N-1条边2.树的相关术语父节点/双亲结点若一个结点含有子结点则这个结点称为其子结点的父节点如A 是 B、C、D、E、F、G 的父结点子结点/孩子结点一个结点含有子树的根节点称为该结点的子结点如B、C、D、E、F、G 是 A 的孩子结点兄弟结点:具有相同父结点的结点互称为兄弟结点亲兄弟,如B、C、D、E、F、G 互为兄弟父结点都是 A结点的度一个结点拥有的子结点数量就是该结点的度如A 的度 6有 6 个孩子B/C/D/E/F/G树的度一棵树中所有结点的度的最大值就是树的度如A 的度是 6是全树最大的因此这棵树的度 6叶子结点 / 终端结点度为 0 的结点没有子结点的结点如B、C、H、I、K、L、M、N、P、Q共 10 个叶子结点分支结点 / 非终端结点度不为 0 的结点有子结点的结点如A、D、E、F、G、J共 6 个分支结点结点的层次从根结点开始计数根为第 1 层根的子结点为第 2 层以此类推如第 1 层A第 2 层B、C、D、E、F、G第 3 层H、I、J、K、L、M、N第 4 层P、Q树的高度 / 深度树中结点的最大层次数如最大层次是 4P、Q 在第 4 层因此树的高度 4结点的祖先从根结点到该结点路径上经过的所有结点都是该结点的祖先如Q 的祖先A、E、JH 的祖先A、D子孙结点以某结点为根的子树中任意结点都称为该结点的子孙如E 的子孙I、J、P、Q路径从树中任意结点出发沿「父结点→子结点」的连接到达另一结点的结点序列如A 到 Q 的路径A → E → J → Q森林由m(m0)棵互不相交的树组成的集合称为森林简单来说就是把一棵树的根结点删掉剩下的子树集合就是一个森林比如删掉 A剩下 B、C、D 为根的子树就是一个森林3. 树的表示方法3.1 双亲表示法核心思想用数组存储所有节点每个节点只记录自己的值和父节点的下标优点查找父节点极快O (1)缺点查找子节点需要遍历整个数组适用只需要快速找父节点的场景双亲表示法结点结构// 双亲表示法 节点结构typedefstructPTNode{// 节点数据intdata;// 父节点在数组中的下标根节点为 -1intparent;}PTNode;3.2 孩子表示法核心思想用数组存所有节点每个节点带一个链表存储所有子节点的下标优点查找子节点极快缺点查找父节点需要遍历适用文件目录、多叉树孩子链表的节点// 孩子链表的节点存子节点下标typedefstructChildNode{intindex;// 子节点在数组中的下标structChildNode*next;// 下一个子节点}ChildNode;3.3 双亲孩子表示法核心思想孩子表示法和每个节点记录父节点下标优点找父、找子都极快缺点结构稍复杂适用需要双向查找的树双亲孩子表示法的结点typedefstructPCTNode{intdata;intparent;// 父节点下标ChildNode*first;}PCTNode;3.4 孩子兄弟表示法核心思想任意树转化为二叉树每个节点只存两个指针firstChild指向第一个子节点nextSibling指向右边的兄弟节点优点所有树都能转二叉树代码极简缺点理解稍难适用二叉树、红黑树、B 树、文件系统结点结构typedefstructCSNode{intdata;structCSNode*firstChild;// 第一个子节点structCSNode*nextSibling;// 右兄弟节点}CSNode3.5 二叉树专用表示法二叉树是度最多为 2的树结构最简单、用途最广结点结构// 二叉树节点typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;// 左、右孩子}BiTNode;| | |表示法存储结构优点缺点适用场景双亲表示法数组找父极快找子慢并查集孩子表示法数组 链表找子极快找父慢文件目录双亲孩子数组 链表父子都快结构复杂通用树孩子兄弟纯链表万能转二叉树理解稍难所有树、二叉树、红黑树二、二叉树1.概念与结构定义二叉树是每个节点最多有两个子节点的树形结构两个子节点分别称为左孩子left child右孩子right child特点子树有左右之分顺序不能随意交换可以是空树 ,每个节点度≤ 22. 特殊二叉树2.1 满二叉树每一层节点都达到最大值所有叶子结点都在最底层加粗样式高度h节点总数 2^h -12.2 完全二叉树除最后一层外其他层节点都满最后一层节点靠左连续排列3.二叉树性质根据满⼆叉树的特点可知若规定根结点的层数为1则⼀棵⾮空⼆叉树的第i层上最多有2i−1个结点若规定根结点的层数为1则深度为 h 的⼆叉树的最⼤结点数是2h − 1若规定根结点的层数为1具有 n 个结点的满⼆叉树的深度h log(n1)( log以2为底 n1 为对数)4.二叉树的存储结构⼆叉树⼀般可以使⽤两种结构存储⼀种顺序结构⼀种链式结构4.1 顺序结构二叉树的顺序存储结构是指采用数组对二叉树进行存储。该存储方式仅适用于完全二叉树若用于存储非完全二叉树会因数组中产生大量空闲位置导致存储空间严重浪费因此完全二叉树是最适合采用顺序存储的二叉树类型。在实际应用中堆数据结构中的堆 通常采用数组实现顺序存储。需要明确区分数据结构中的堆是一种特殊的完全二叉树结构与操作系统虚拟进程地址空间中用于动态内存分配的堆区是两个完全不同的概念二者不可混淆。4.2 链式结构二叉树的链式存储结构是通过链表来表示一棵二叉树利用链表指针反映节点之间的逻辑层次关系。通常情况下链表中的每个节点包含三个域一个数据域和两个指针域。其中数据域用于存储节点数据两个指针域分别用于存储指向该节点左孩子和右孩子的节点地址。三、顺序结构二叉树–堆⼀般堆使⽤顺序结构的数组来存储数据堆是⼀种特殊的⼆叉树具有⼆叉树的特性的同时还具备其他的特性1.堆的基本概念堆是一种完全二叉树结构的优先队列不是内存里的堆内存2.堆必须同时满足两个条件结构条件是一棵完全二叉树堆序性质父节点与子节点满足大小关系大根堆 / 小根堆3.堆的两种类型3.1 大根堆最大堆 Max Heap根节点值最大任意父节点 ≥ 左右孩子节点从上到下递减3.2 小根堆最小堆 Min Heap根节点值最小任意父节点 ≤ 左右孩子节点从上到下递增注意堆不要求左右子树有序只要求父子有序4.二叉树的性质对于具有n个结点的完全⼆叉树如果按照从上⾄下从左⾄右的数组顺序对所有结点从0开始编号则对于序号为i的结点有若i0i位置结点的双亲序号(i-1)/2i0i为根结点编号⽆双亲结点若2i1n左孩⼦序号2i12i1n否则⽆左孩⼦若2i2n右孩⼦序号2i22i2n否则⽆右孩⼦5.堆的实现堆四、链式二叉树的实现链式二叉树

相关文章:

数据结构--二叉树知识讲解

一、树 1.**树的概念与结构 ** 树是一种非线性的数据结构,它是由 n(n ≥ 0) 个有限结点组成的、具有层次关系的集合。 当 n 0 时,称为空树。当 n > 0 时,有且仅有一个特殊结点,称为根结点Root。除根结点外,其余…...

别再死记硬背!用‘看图说话’六步法搞定开关电源环路补偿(附波特图分析)

开关电源环路补偿实战:六步图形化设计法 电源工程师们是否曾对环路补偿设计感到无从下手?面对密密麻麻的公式推导和抽象的理论分析,很多从业者往往陷入"知其然而不知其所以然"的困境。本文将颠覆传统学习路径,通过独创的…...

Ollama+AnythingLLM构建本地知识库问答+OpenAPI调用

机器配置:处理器:13th Gen Intel(R) Core(TM) i5-13500H(2.60 GHz) 机带 RAM:32.0 GB (31.7 GB 可用) 系统类型:64 位操作系统, 基于 x64 的处理器一、构建本地问答知识库1、下载Ollamahttps://ollama.com/download安装完成打开cm…...

【DeepSeek】BL2加载BL3x

下面是详细的流程解析: 1. BL2 阶段(可信启动加载器) 职责:BL2 运行在 Trusted SRAM 中,主要负责加载后续阶段的镜像。动作: BL2 从存储设备(如 Flash)中读取 BL31(EL3 R…...

DriveDreamer-Policy:一种统一生成与规划的几何-落地世界-行动模型

26年4月来自极佳科技、多伦多大学和香港中文大学的论文“DriveDreamer-Policy: A Geometry-Grounded World–Action Model for Unified Generation and Planning”。 近年来,世界-动作模型(WAM)应运而生,旨在连接视觉-语言-动作&a…...

CustomTkinter:解决Python GUI现代化渲染与跨平台适配的技术架构

CustomTkinter:解决Python GUI现代化渲染与跨平台适配的技术架构 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter Python的Tkinter框架在桌面GUI…...

2025最权威的十大AI论文方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是针对维普检测系统的 AI 降重需求,那就得从文本特征调整这方面着手。首先呢&a…...

Python 7 天入门 day_05:示例代码跟着敲

本文介绍了Python常用内置函数(zip/map/abs/ord/hex/bin/pow/eval等)的应用场景,包括数据打包、类型转换、数学运算等。 通过示例讲解了自定义函数的开发方法,包括参数处理(*args/**kwargs)、递归调用和变量作用域。 最后演示了冒泡排序和快速排序两种经…...

mysql如何配置审计日志输出_mysql audit_log_format设置

audit_log_format 设置成 STATEMENT 还是 JSON?MySQL 审计日志的 audit_log_format 只支持两个值:NEWLINE(已弃用)、JSON,没有 STATEMENT 选项。官方文档里写的 “STATEMENT” 是旧版 MySQL Enterprise Audit 插件的遗…...

nli-MiniLM2-L6-H768在教育行业落地:学生问答自动归类与知识点匹配案例

nli-MiniLM2-L6-H768在教育行业落地:学生问答自动归类与知识点匹配案例 1. 项目背景与价值 在教育场景中,学生每天会提出大量问题,这些问题分散在不同平台、不同课程中。传统的人工分类方式效率低下,且难以实现知识点精准匹配。…...

算法训练营第七天 | 环形链表 扭捏快指针步步退,霸道慢指针狠狠追

今日算法题:142. 环形链表 II 编写代码前想法: 在刚看到题目的时候,我觉得题目重点是如何判断链表是否有环,我初步判断应该是利用while() 进行判断,但如果没有环,该利用什么条件来进行判断的退出&#xff0…...

前端开发者构建AI应用实战指南

1. 前端开发者如何构建AI应用:从入门到实战作为一名长期奋战在前端领域的开发者,我清晰地记得第一次尝试将AI能力整合进Web应用时的迷茫。面对TensorFlow.js的文档、各种API接口和模型部署选项,那种既兴奋又无从下手的感觉至今难忘。经过两年…...

UE5Varest发送https请求发不出去,收不到任何回复

不要勾选,设置好后必须重启才能生效...

如何快速提升网盘下载速度:8大平台完整解决方案

如何快速提升网盘下载速度:8大平台完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 /…...

c#如何使用Record类型_c#Record类型从入门到精通教程

Record 是带语义的不可变数据容器,启用值相等、init-only 属性、非空保障及自动生成 ToString/Equals/GetHashCode;误当普通 class 用易踩坑。Record 类型不是语法糖,是带语义的不可变数据容器Record 类型在 C# 9 中不是“更简洁的 class 写法…...

告别Excel配置表:在Unity中搭建Luban+Jenkins的自动化配置管线

Unity游戏开发:基于LubanJenkins的自动化配置管理实践 在游戏研发领域,配置管理一直是连接策划与程序的重要桥梁。传统Excel配置表工作流中,策划修改表格后需要手动通知程序重新导入,版本控制混乱,多人协作时冲突频发。…...

别再用错了!银河麒麟V10 SP2中Crontab的5个高级用法与3个典型误区

别再用错了!银河麒麟V10 SP2中Crontab的5个高级用法与3个典型误区 在银河麒麟V10 SP2的日常运维中,Crontab作为定时任务管理的核心工具,其重要性不言而喻。然而,许多中高级用户在使用过程中,往往陷入一些常见误区&…...

《JAVA面经实录》- 权限管理框面试题

《JAVA面经实录》- 权限管理框面试题Java权限管理框架面试题(23道高频题)本文严格按照指定题目顺序,整理每道题的面试标准回答补充要点,贴合后端面试实战场景,语言简洁、重点突出,可直接用于备考&#xff0…...

如何在 Firebase Storage 中批量获取所有媒体文件的下载链接

本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中所有媒体文件(如图片)下载 url 的标准方法,涵盖完整代码示例、常见错误分析及生产环境注意事项。 本文详解 2023 年 firebase sdk v9 中正确列出并批量获取 storage 中…...

2026届毕业生推荐的AI辅助论文助手推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 由于学术研究对效率跟质量有着双重 demands,论文 AI 工具已然成了科研工作者的关…...

终极网盘直链下载助手:8大平台满速下载的完整指南

终极网盘直链下载助手:8大平台满速下载的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

# 发散创新:用Go语言打造绿色计算的高效任务调度器在当今算力爆炸的时代

发散创新:用Go语言打造绿色计算的高效任务调度器 在当今算力爆炸的时代,绿色计算已从理念走向实践。它不仅关乎节能减排,更体现在如何以更低能耗完成更高效率的任务处理。本文将通过一个真实可运行的 Go 语言项目——GreenScheduler&#xff…...

RBAC 与安全策略:集群权限控制的正确姿势

文章目录 1. 认证与授权:两道门的本质区别 1.1 用户身份的三种类型 1.2 X.509 证书认证的工作原理 2. RBAC 授权模型:四个核心对象 2.1 Role 与 ClusterRole:作用域差异 2.2 RoleBinding 的一个反直觉特性 2.3 聚合 ClusterRole:可扩展的权限体系 3. ServiceAccount:权限泄…...

不会写Prompt、功能太单一?这款AI太懂我

试过不下二十款AI对话工具,要么功能单一只能回答基础问题,要么定制化门槛太高不会写Prompt根本用不好,要么价格贵得离谱长期用吃不消。直到最近挖到科学对话这款全能科研工具,用了一个多月,确实解决了我一直以来不少问…...

MedPeer科研工具最优搭配指南

我整理了MedPeer所有会员套餐的核心权益,结合不同科研身份的真实需求给大家梳理一遍,帮你快速找到最适合自己的高性价比选择。MedPeer会员分为综合全能型和垂直功能型两大类,共15种套餐,覆盖科研全流程,支持年卡/月卡&…...

告别‘看不懂’:用CANalyzer和PCAN-USB Pro手把手解析一条真实的J1939报文

从零解析J1939报文:CANalyzer实战指南 当你第一次从卡车CAN总线上捕获到一条J1939报文时,那串看似随机的十六进制数字可能令人望而生畏。但别担心——这正是工具存在的意义。本文将带你用CANalyzer和PCAN-USB Pro这类专业工具,像侦探破译密码…...

从DOS调试到现代IDE:用Debug的P/G/T命令手把手教你调试汇编子程序

从DOS调试到现代IDE:汇编子程序调试技术的演进与实战 在计算机科学教育的漫长历史中,调试技术始终是程序员成长道路上不可或缺的一环。对于学习汇编语言的开发者而言,理解如何有效地调试子程序不仅是掌握底层编程的关键,更是培养系…...

微信聊天记录永久保存:3步打造你的个人数字档案馆

微信聊天记录永久保存:3步打造你的个人数字档案馆 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...

智能车图像处理实战:用Python+OpenCV复现OTSU大津法,5分钟搞定赛道线二值化

智能车视觉巡线:5分钟掌握OpenCV大津法赛道分割实战 清晨的实验室里,智能车正沿着测试赛道缓缓行驶,摄像头捕捉到的画面却因为光线变化显得模糊不清。这正是大多数参赛队伍遇到的第一个技术门槛——如何让机器视觉系统在各种光照条件下都能准…...

5分钟彻底清理Windows垃圾软件:Bulk Crap Uninstaller完全指南

5分钟彻底清理Windows垃圾软件:Bulk Crap Uninstaller完全指南 【免费下载链接】Bulk-Crap-Uninstaller Remove large amounts of unwanted applications quickly. 项目地址: https://gitcode.com/gh_mirrors/bu/Bulk-Crap-Uninstaller 你是否曾为电脑中堆积…...