二叉树属于逻辑结构,可以使用链表和数组进行存储。
- 链式存储
二叉树的每一个节点包含3部分
存储数据的data变量
指向左孩子的left指针
指向右孩子的right指针
- 数组存储
使用数组存储时,会按照层级顺序把二叉树的节点放到数组中对应的位置上。
如果某一个节点的左孩子或右孩子空缺,则数组的相应位置也空出来
寻址方式:
一个父节点的下标是n,那么它的左孩子节点下标就是2×n+1、右孩子节点下标就是2*(n+1)
对于一个稀疏的二叉树(孩子不满)来说,用数组表示法是非常浪费空间的
所以二叉树一般用链表存储实现。(二叉堆除外)