顺序存储
实现:将一棵二叉树按照当做一棵满二叉树进行编号(从上到下,从左到右),编号作为数组的下标,一次存放到二叉树的数据元素。
当一个二叉树不是完全二叉树,那么总会有一些位置没有元素,那么就将这些位置空出来。
#define CAPACITY
typedef TElemType SqBinaryTree[CAPACITY];
SqBinaryTree sb;
将下表恢复成一棵二叉树:
如图,空着的地方对应没有数据:
缺点:
浪费储存空间,只有左孩子或者只有右孩子的情况更加明显,更适用于满二叉树或者完全二叉树
而且这样表示不够形象
链式存储
二叉链表:
struct BinaryTree{
TElemType data;
BinaryTree *leftchild,*rightchild;
};
在n个结点的二叉树链表中,有n+1个空指针域;