如果以第 0 个位置开始标记树根节点,则第 i 个结点的左右孩子分别为:
- 2i+1
- 2i+2
反之,如果一个结点的标号为 i,则其父节点为:
- i/2:i 为左孩子结点;
- i/2-1:i 为右孩子结点;
这是传统常规的做法,可是当我们换个方式存储这些根上的结点的话,比如,根节点在索引为 1,而不是为 0 的地方,这样 结点 i 的左右孩子分别为:
- 2*i
- 2*i+1
这种方式的真正好处在于:当结点为 i 时,不论为左还是右孩子结点,其父节点总是,i/2;
如果以第 0 个位置开始标记树根节点,则第 i 个结点的左右孩子分别为:
反之,如果一个结点的标号为 i,则其父节点为:
这是传统常规的做法,可是当我们换个方式存储这些根上的结点的话,比如,根节点在索引为 1,而不是为 0 的地方,这样 结点 i 的左右孩子分别为:
这种方式的真正好处在于:当结点为 i 时,不论为左还是右孩子结点,其父节点总是,i/2;