顺序存储即为在计算机内存中开辟一段连续的内存空间用于存放二叉树的信息。对于一个二叉树,将二叉树按照满二叉树的标号方式,从上到下、从左到右、从0开始,依次给二叉树的结点进行标号。标号完成后,按照下标于数据,将其存入数组中。
当二叉树不是完全二叉树时,应该先将二叉树写成满二叉树的形式,空的位置不仅要保留空缺位置,还要依次编号。下图中,一共有7个数据,但是应当将上一层的结点和左子树补全,再编号,再存储。否则,无法区分满二叉树与非满二叉树,会混淆。
二叉树类的定义
//定义二叉树类 class SqBiTree { public: int SqBiTree[MAXSIZE]; };
类名称为SQBiTree,内有一个整形数组,名称为SqBiTree,长度为100
例题:
因此,当按照满二叉树的标号存储二叉树时,会非常容易回复成员时的样子。
顺序存储的显著缺点:
当大多数结点位于右子树时,会造成空间浪费。并且树无法扩大。树的顺序存储密度往往小于1.当树的深度为k时,一定要开辟2^k-1个空间。所以,对于满二叉树,用顺序存储更方便。