一、顺序存储结构
1. 定义与特点
顺序存储结构是指用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素。
完全二叉树和满二叉树采用顺序存储比较合适,因为它们的结点序号可以唯一地反映结点之间的逻辑关系,从而既能最大地节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置以及结点之间的关系。
2. 存储方式
将二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系。
通常采用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号。
3. 优缺点
优点:对于完全二叉树和满二叉树,顺序存储结构能够最大化地利用存储空间,并且方便通过数组下标快速访问结点。
缺点:对于一般的二叉树,特别是深度大但结点少的二叉树(如右单支树),顺序存储会浪费大量的存储空间,因为需要为不存在的结点分配空间。
二、链式存储结构
1. 定义与特点
链式存储结构是指用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。
链表中每个结点通常包含数据域和两个指针域,分别用来存放结点的数据和指向其左孩子、右孩子的指针。
2. 存储方式
每个结点包含三个域:数据域(data)、左指针域(lchild)和右指针域(rchild)。
当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示)。
3. 优缺点
优点:链式存储结构对于一般的二叉树(特别是那些结点分布不均匀的二叉树)能够节省存储空间,因为它只为实际存在的结点分配空间。此外,链式存储结构还便于插入和删除操作,因为不需要移动大量的结点。
缺点:相对于顺序存储结构,链式存储结构在访问结点时可能需要更长的时间,因为需要通过指针逐个遍历结点。此外,链式存储结构还需要额外的空间来存储指针信息。
4. 扩展
为了方便访问某结点的双亲,还可以给链表结点增加一个双亲字段parent,用来指向其双亲结点。这种存储结构被称为三叉链表,它既便于查找孩子结点,又便于查找双亲结点,但相对于二叉链表而言增加了空间开销。
标签:存储,结点,二叉树,链式,数据结构,顺序存储,指针 From: https://blog.csdn.net/qq_39311377/article/details/140896530