【数据结构】二叉树的存储结构(顺序/链式)
考点频率★★★★☆选择题常考是理解二叉树遍历和操作的基础难度⭐⭐建议重点掌握顺序存储的适用范围完全二叉树和链式存储的节点结构1️⃣ 存储结构概述在上一篇文章中我们学习了二叉树的五大性质。但光有性质还不够——数据最终要存到计算机里才能用。二叉树的存储方式主要有两种顺序存储用数组存储适合完全二叉树链式存储用链表存储适合所有二叉树打个比方顺序存储就像固定座位的电影院——每个座位数组下标对应一个固定位置适合人员固定完全二叉树的场景。链式存储就像自由入座的教室——每个人节点记住自己左边和右边是谁灵活性高适合任意形状的群体任意二叉树。2️⃣ 顺序存储Sequential Storage2.1 核心思想将二叉树的节点按照从上到下、从左到右的顺序依次存储到一维数组中。节点在数组中的下标位置直接反映了它在树中的逻辑位置。基于的性质完全二叉树的编号规律性质5——对于编号为i ii的节点左子节点位置2 i 2i2i右子节点位置2 i 1 2i 12i1父节点位置⌊ i / 2 ⌋ \lfloor i/2 \rfloor⌊i/2⌋2.2 存储规则规则说明数组下标从1开始或从 0 开始考试常考从1开始下标1存储根节点节点i ii的左子节点存储在2 i 2i2i如果2 i ≤ n 2i \le n2i≤n节点i ii的右子节点存储在2 i 1 2i12i1如果2 i 1 ≤ n 2i1 \le n2i1≤n空节点用特殊值如#或0占位保持数组位置的对应关系示例完全二叉树1 / \ 2 3 / \ \ 4 5 6顺序存储为[1, 2, 3, 4, 5, 6]下标从1开始2.3 顺序存储的适用场景适用场景原因完全二叉树节点位置紧凑数组空间利用率高满二叉树所有位置都被填满空间利用率100%2.4 顺序存储的痛点考点对于一般二叉树非完全二叉树顺序存储会浪费大量空间。1 / \ 2 3 / \ 4 5顺序存储[1, 2, 3, 4, #, #, 5]中间两个空位用#占位关键点一般二叉树如果用顺序存储必须把空缺的位置也用特殊值占位导致数组中有大量空闲空间。最坏情况下一棵深度为k kk的二叉树即使只有k kk个节点也需要2 k − 1 2^k - 12k−1长度的数组。这就是为什么一般二叉树不用顺序存储。3️⃣ 链式存储Linked Storage3.1 核心思想用链表来存储二叉树每个节点包含数据域和两个指针域分别指向左子节点和右子节点。节点之间通过指针连接物理上可以分散存储。3.2 节点结构typedefstructBiTNode{intdata;// 数据域structBiTNode*lchild;// 左子节点指针structBiTNode*rchild;// 右子节点指针}BiTNode,*BiTree;3.3 三种遍历方式在链式存储中的实现遍历方式访问顺序代码逻辑伪代码先序遍历Preorder根 → 左 → 右访问根; 先序(左子树); 先序(右子树)中序遍历Inorder左 → 根 → 右中序(左子树); 访问根; 中序(右子树)后序遍历Postorder左 → 右 → 根后序(左子树); 后序(右子树); 访问根示例对上面的树进行遍历1 / \ 2 3 / \ \ 4 5 6先序1 2 4 5 3 6中序4 2 5 1 3 6后序4 5 2 6 3 14️⃣ 顺序存储 vs 链式存储对比表对比项顺序存储链式存储二叉链表底层结构数组链表指针适用范围完全二叉树/满二叉树所有二叉树存储密度完全二叉树高一般二叉树低大量空位低每个节点两个指针约50%查找父节点直接计算⌊ i / 2 ⌋ \lfloor i/2 \rfloor⌊i/2⌋O ( 1 ) O(1)O(1)需要遍历O ( n ) O(n)O(n)查找子节点直接计算2 i 2i2i或2 i 1 2i12i1O ( 1 ) O(1)O(1)通过指针访问O ( 1 ) O(1)O(1)插入/删除困难需要移动大量元素简单修改指针空间浪费一般二叉树浪费严重每个节点固定指针开销5️⃣ 经典例题例题1顺序存储的适用性以下哪种二叉树最适合采用顺序存储A. 满二叉树B. 只有右子树的二叉树C. 深度为10的任意二叉树D. 每个节点只有一个子节点的二叉树解析满二叉树和完全二叉树最适合顺序存储因为数组中没有空位浪费。满二叉树的节点编号是连续的可以100%利用数组空间。选A。例题2三叉链表的改进如果需要在二叉树中频繁查找某个节点的父节点应该选择什么存储结构A. 顺序存储B. 普通二叉链表无父指针C. 三叉链表增加父指针D. 循环链表解析三叉链表在普通二叉链表的基础上增加了父指针查找父节点时不需要遍历直接访问即可。软考中考到这个概念时知道它的作用是快速查找父节点即可。选C。例题3判断顺序存储结构适用于所有类型的二叉树。 解析错误。顺序存储只适用于完全二叉树和满二叉树对于一般二叉树会造成大量空间浪费。6️⃣ 记忆口诀完全二叉用数组下标计算找父母。一般二叉用链表左右指针指向清楚。先序根左右中序左根右后序左右根。7️⃣ 小测验评论区对答案对于一棵深度为h hh的完全二叉树采用顺序存储时数组的长度至少为 。A.h hhB.2 h − 1 2^{h-1}2h−1C.2 h − 1 2^h - 12h−1D.2 h − 2 2^{h} - 22h−2本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #二叉树 #顺序存储 #链式存储 #数据结构 #软考备考

相关新闻

第6章 时域递归滤波:IIR滤波器在视频降噪中的应用

第6章 时域递归滤波:IIR滤波器在视频降噪中的应用

作者:一位在ISP领域摸爬滚打十余年的算法工程师 “纸上得来终觉浅,绝知此事要躬行。”——这门课的每一行代码,都希望你亲自跑一遍。 从原理到代码,从理论到工程落地 本课程共30章,系统讲解ISP核心算法——多帧降噪、HDR合成、夜景算法的原理、实现与调优。 每章包含:原理…

2026/10/16 6:54:32 阅读更多 →
线程中断-interrupted方法

线程中断-interrupted方法

一、没有中断机制,代码会出什么问题?假设 Java 没有 interrupt(),你要怎么让一个正在运行的线程停下来?方案 1:用一个 volatile boolean 标志位class Worker implements Runnable {private volatile boolean running …

2026/10/16 6:54:16 阅读更多 →
PD Sink芯片怎么选?从耐压、外围和协议三方面看懂ECP5702的优势

PD Sink芯片怎么选?从耐压、外围和协议三方面看懂ECP5702的优势

分析:以常见的20V/3A快充场景为例,我们需要特别关注三个致命参数:工作耐压值外围电路复杂度协议支持灵活性(一)首先是工作耐压,决定了芯片在高压快充场景下的可靠性。假设你的设备只用了耐压12V的芯片&…

2026/10/2 1:05:19 阅读更多 →

最新新闻

arc_conv_r55实战:ARC游戏素材解包、参数详解与常见问题修复

arc_conv_r55实战:ARC游戏素材解包、参数详解与常见问题修复

简介:arc_conv_r55 是一款面向开发者和数据管理员的 arc 格式压缩包专用解包与转换工具,集成解包、打包、格式转换及文件清理等模块,适合需要批量处理自定义压缩包的场景。包内共 415 个文件,以 330 个 asm 汇编源码为主&#xff…

2026/10/16 6:54:58 阅读更多 →
Continue 插件 JetBrains 实操指南:5 步跑通 AI 代码补全

Continue 插件 JetBrains 实操指南:5 步跑通 AI 代码补全

Continue 插件 JetBrains 实操指南:5 步跑通 AI 代码补全 【免费下载链接】continue open-source coding agent 项目地址: https://gitcode.com/GitHub_Trending/co/continue Continue 插件是一款活在 JetBrains IDE 内部的 AI 编程助手:装上之后…

2026/10/16 6:54:58 阅读更多 →
[基于OpenEvals的自动化评估-09]针对RAG的三种评估

[基于OpenEvals的自动化评估-09]针对RAG的三种评估

我们知道RAG分两步:一、根据原始输入检索相关的文档;二、将检索结果作为上下文提交给LLM生成输出。两个步骤涉及三类数据:输入、上下文和输出。三类数据两两比较就带来了如下三种针对RAG的评估: 检索相关性评估:评估作…

2026/10/16 6:54:58 阅读更多 →
BthTelemetry.dll丢失修复全指南:系统自带工具可靠解决

BthTelemetry.dll丢失修复全指南:系统自带工具可靠解决

1. DLL文件丢失是怎么回事——先说结论和正确姿势最近不少朋友遇到一个挺闹心的问题:开机提示BthTelemetry.dll文件丢失找不到,或者干脆一开机就弹窗报错。这个文件看着眼生,很多人的第一反应是上网搜“BthTelemetry.dll 免费下载”&#xff…

2026/10/16 6:54:58 阅读更多 →
Kafka实时数据平台治理:Streams、Schema校验与多租户实战

Kafka实时数据平台治理:Streams、Schema校验与多租户实战

做消息中间件这些年,我最大的感触是:Kafka在很多团队里长期只扮演“消息管道”的角色,消息发出去、收进来,任务就结束了。直到线上实时指标出问题,数据对不上,或者某个团队把consumer lag顶到报警线&#x…

2026/10/16 6:54:58 阅读更多 →
SSM+Vue篮球比赛邀约系统毕设全攻略:核心功能与论文框架

SSM+Vue篮球比赛邀约系统毕设全攻略:核心功能与论文框架

做了几个SSMVue方向的毕设项目辅导之后,我可以很负责任地说一句:篮球比赛邀约系统,是这个技术栈里特别适合毕设落地的题目。它不是纯电商那种“增删改查四件套”堆出来的空壳,也不是短期内根本写不完的分布式大厂项目,…

2026/10/16 6:53:58 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →