数据结构之二叉树的顺序存储结构与链式存储结构

一、顺序存储结构

1. 定义与特点

顺序存储结构是指用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素。
完全二叉树和满二叉树采用顺序存储比较合适,因为它们的结点序号可以唯一地反映结点之间的逻辑关系,从而既能最大地节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置以及结点之间的关系。

2. 存储方式

将二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系。
通常采用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号。

3. 优缺点

优点:对于完全二叉树和满二叉树,顺序存储结构能够最大化地利用存储空间,并且方便通过数组下标快速访问结点。
缺点:对于一般的二叉树,特别是深度大但结点少的二叉树(如右单支树),顺序存储会浪费大量的存储空间,因为需要为不存在的结点分配空间。

二、链式存储结构

1. 定义与特点

链式存储结构是指用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。
链表中每个结点通常包含数据域和两个指针域,分别用来存放结点的数据和指向其左孩子、右孩子的指针。

2. 存储方式

每个结点包含三个域:数据域(data)、左指针域(lchild)和右指针域(rchild)。
当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示)。

3. 优缺点

优点:链式存储结构对于一般的二叉树(特别是那些结点分布不均匀的二叉树)能够节省存储空间,因为它只为实际存在的结点分配空间。此外,链式存储结构还便于插入和删除操作,因为不需要移动大量的结点。
缺点:相对于顺序存储结构,链式存储结构在访问结点时可能需要更长的时间,因为需要通过指针逐个遍历结点。此外,链式存储结构还需要额外的空间来存储指针信息。

4. 扩展

为了方便访问某结点的双亲,还可以给链表结点增加一个双亲字段parent,用来指向其双亲结点。这种存储结构被称为三叉链表,它既便于查找孩子结点,又便于查找双亲结点,但相对于二叉链表而言增加了空间开销。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DKPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值