二叉树的顺序存储,指的是使用顺序表(数组)存储二叉树。对的,你没有看错,虽然树是非线性存储结构,但也可以用顺序表存储。
需要注意的是,顺序存储只适用于完全二叉树。对于普通的二叉树,必须先将其转化为完全二叉树,才能存储到顺序表中。
满二叉树也是完全二叉树,可以直接用顺序表存储。
一棵普通二叉树转化为完全二叉树的方法很简单,只需要给二叉树额外添加一些结点,就可以把它"拼凑"成完全二叉树。如图 1 所示:
图 1 普通二叉树的转化
图 1 左侧是普通二叉树,右侧是转化后的完全(满)二叉树。解决了二叉树的转化问题,接下来学习如何顺序存储完全(满)二叉树。
所谓顺序存储完全二叉树,就是从树的根结点开始,按照层次将树中的结点逐个存储到数组中。
图 2 完全二叉树示意图
例如存储图 2 中的完全二叉树,各个结点在顺序表中的存储状态如图 3 所示: