二叉树的存储方式主要分为顺序存储,和链式存储。
二叉树的顺序存储
用一组地址连续的存储单元,以层序顺序存放二叉树的数据元素,结点的相对位置蕴含着结点之间的关系。
首先我们先看一下完全二叉树的顺序存储是什么样的
如上图所示,完全二叉树是按照层序顺序存放的数据元素依次是ABCDEFGHIJKL。
一般二叉树的储存方式类比于完全二叉树如下图所示
上图可以看出一般二叉树的存储是把一般的二叉树先补成完全二叉树,然后按照完全二叉树的顺序存储方式进行存储,而新补上去的结点只占位置,不存放结点数据。
二叉树的链式存储
基本思想:二叉树的每个结点对应一个链表结点,链表结点除了存放与二叉树结点有关的数据信息外,还要设置指示左右孩子的指针。
结点结构如上图所示,其中:
- data:数据域,存放该结点的数据信息;
- lchild:左指针域,存放指向左孩子的指针;
- rchild:右指针域,存放指向右孩子的指针。
下图所示为一般二叉树的链式存储:
左边是二叉树的结构,右边是该树的链式存储表示。
