二叉树的存储方式
存储一棵二叉树有两种方法,一种是基于指针或者引用的二叉链式存储法,一种是基于数组的顺序存储法。
链式存储法
用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。二叉链
每个节点有三个字段,其中一个存储数据,另外两个是指向左右子节点的指针。
顺序储存法
顺序结构存储就是使用数组来存储。
我们把根节点存储在下标 i = 1 的位置,那左子节点存储在下标 2 * i = 2 的位置,右子节点存储在 2 * i + 1 = 3 的位置。
以此类推,B 节点的左子节点存储在 2 * i = 2 * 2 = 4 的位置,右子节点存储在 2 * i + 1 = 2 * 2 + 1 = 5 的位置。
如果节点 X 存储在数组中下标为 i 的位置,下标为 2 * i 的位置存储的就是左子节点。
下标为 2 * i + 1 的位置存储的就是右子节点。
反过来,下标为 i/2 的位置存储就是它的父节点。
通过这种方式,我们只要知道根节点存储的位置,就可以通过下标计算,把整棵树都串起来。
(一般情况下,为了方便计算子节点,根节点会存储在下标为 1 的位置)