二叉树的存储结构

二叉树的存储结构有两种,分别为顺序存储和链式存储,此篇文章介绍顺序存储

二叉树的顺序存储

二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树

重点!!!

顺序存储只适用于完全二叉树(包括满二叉树),因此,如果我们想顺序存储普通二叉树,需要提前将普通二叉树转化为完全二叉树

满二叉树的限制条件比完全二叉树更严苛,也就是说如果此树是满二叉树,那么它一定也是完全二叉树

普通二叉树转完全二叉树的方法

给二叉树额外添加一些节点,将其拼凑成完全二叉树

图 1 普通二叉树的转化

如上图 1,左侧是普通二叉树,右侧是转化后的完全(满)二叉树

解决转换问题后得解决存储问题

完全二叉树的顺序存储,仅需从根节点开始,按照层次依次将树中节点存储到数组

图 2 完全二叉树示意图

如上图 2 的完全二叉树,其存储状态如下图 3:

图 3 完全二叉树存储状态示意图

同样,存储由普通二叉树转化来的完全二叉树,其存储状态如下图 4:

图 4 普通二叉树存储状态示意图

实现存储过程后需要考虑还原问题

完全二叉树具有此性质,将树中节点按照层次并从左到右依次标号,若节点  有左右孩子,则其左孩子节点为 ,右孩子节点为 ,此性质可用于还原数组中存储的完全二叉树

但是实现此部分代码,需要对二叉树进行层次遍历!!!

我将在后面的文章中补充!!!

(数据结构)二叉树的顺序存储结构相关推荐

  1. 数据结构(C语言版)——二叉树的顺序存储结构(代码版)

    一.代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math. ...

  2. 数据结构 二叉树的存储结构_线程二叉树| 数据结构

    数据结构 二叉树的存储结构 线程二叉树 (Threaded Binary Tree ) A binary tree can be represented by using array represen ...

  3. 二叉树的顺序存储结构

    一.顺序存储结构 二叉树的顺序存储结构是指用一组地址连续的存储单元依次自上而下.自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为 i 的结点元素存储在一维数组下标为 i-1 的分量中. 依据 ...

  4. 数据结构-二叉树的顺序存储

    二叉树的顺序存储 二叉树的概念及结构 二叉树的性质 顺序存储 堆的初始化 堆的插入 堆的删除 二叉树的概念及结构 概念 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为 ...

  5. 数据结构---二叉树的顺序结构及实现

    二叉树的顺序结构及实现 1. 二叉树的顺序结构 2. 堆的概念及结构 3. 堆的实现 3.1 堆向下调整算法 3.2 堆排序 3.2.1 堆排序完整代码 3.3 堆的插入 3.3.1 堆的向上排序算法 ...

  6. 从零开始学C语言数据结构 : 二叉树的顺序结构

    二叉树的顺序结构 1.树 1.1树的概念 1.2树的表示 1.3二叉树 2.二叉树的顺序结构 1.堆 2.堆的实现 2.1.向下调整 2.2堆的创建--向下调整实现 2.3建堆的时间复杂度 2.4堆的 ...

  7. 二叉树的顺序存储结构C语言代码实现

    二叉树的顺序存储是指用一组地址连续的存储单元依次自上而下.自左至右存储完全二叉树上的节点元素,即将完全二叉树上的编号为i的结点元素存储在一维数组下摆为i-1的分量中. 依据二叉树的性质,完全二叉树和满 ...

  8. 二叉树的顺序存储结构------(C语言实现)

    上图所示的二叉树用顺序存储方式存为 结点 A B C D E 0 F 下标 0 1 2 3 4 5 6 以A结点为例:相当于一个一维数组啦 设A结点下标为i时 A的左子树下标为2*i +1,B就是 2 ...

  9. 数据结构线性表顺序存储结构和主要算法实现

    (1) 线性表的定义. 零个或多个数据元素的有限序列 序列线性表中有直接后继元素,有且仅有一个直接后继,有且仅有一个直接前驱,数据元素之间的关系是一对一的关系 常用的List操作: Operation ...

最新文章

  1. ctex 图片裁剪 盖住文字_新媒体运营们不可或缺的图片编辑神器!
  2. Linux - 手册(manual)使用 详解
  3. 印中合作国际农民丰收节贸易会-张志祥:谋定农业大健康
  4. Spring Security——认证失败时获取认证信息(用户名、密码、IP、SESSIONID)
  5. .NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
  6. 清空网站浏览记录就行啦?看Python如何实时监控网站浏览记录
  7. jquery获取父级元素和子级元素
  8. windows启动管理器怎么修复计算机,如果启动管理器丢失怎么办
  9. 程序员面试金典——4.7最近公共祖先
  10. 后台代码调用Application Resources
  11. 【汇率预测】基于matlab模拟退火算法优化BP神经网络汇率预测【含Matlab源码 689期】
  12. springboot集成quartz,简版-通俗易懂
  13. 一网打尽Mac上的高效工具 - 系统工具篇(附演示视频)
  14. jmeter 变量的使用
  15. 中国计算机协会推荐学术会议、期刊(人工智能)收藏直连版
  16. python 正则表达式取反_python_正则表达式
  17. JSON入门学习总结
  18. JMeter 基本身份验证
  19. 数据库课程设计——图书管理管理系统(一)
  20. 如何写出网站策划方案

热门文章

  1. opencv实战---角度测量
  2. Mac运行缓慢吗?提升苹果电脑速度的几个小技巧
  3. STM32F407获取OV2640摄像头图像及上位机解码(一维码二维码)
  4. acer云桌面计算机,云电脑室快速操作指导(acer)整理素材.docx
  5. JZOJ5475.【NOIP2017提高组】day1T3逛公园
  6. 判断GPS定位服务是否打开
  7. 土壤墒情监测系统浅谈分享--农业气象站和管式墒情水分仪
  8. Win10家庭版无组策略
  9. Rust:Rust语言介绍
  10. autojs之十二圆