一、二叉树
1、顺序储存结构
利用一段连续的储存空间,即数组的形式,按照满二叉树的结构,从上到下,从左到右,按顺序将元素存入数组中,空缺的元素用零补齐。对于满二叉树和完全二叉树,数组中没有零元素,空间利用率达到100%。但其余情况下空间利用率低,所以顺序储存结构最适用于完全二叉树(满二叉树可以视为完全二叉树);
2、链式储存结构
使用链表储存,链表的每个结点的储存结构为:数据域 + 左孩子指针 + 右孩子指针。
这样的储存结构优势在于不论何种形式的二叉树都可以较好的利用空间,但是由于叶子结点的左右指针域都为空,没有很好的利用上。
二、树
1、Parents表示法(即书中所谓双亲表示法,这种翻译怎么看怎么奇怪)
使用一组连续的空间储存(即数组),数组中每个元素的储存结构为:数据域 + Parents地址域。
将树中的所有元素按照从上到下,从左到右的顺序依次记录到数组中对应的各数据域,再将其Parents的地址(在数组中就是Parents的序号)分别存入对应的指针域。树的根没有Parents(孤儿),所以指针域置为-1或其他约定好的数字。
Parents表示法的优势在于方便找到各元素的Parents结点,但要找到某个元素的子节点就必须要遍历整个数组,时间复杂度较高。
2、孩子表