我们都知道
如 1
2 3
4 5 6 7这种完全二叉树的编码,都有一个特性:
即如果某个节点的序号为i,那么2i如果存在就是其左孩子,2i+1如果存在就是其右孩子,为什么呢
首先假设一个二叉树一共有k+1层,下图左侧表示节点编码,右侧表示层序
由于第k层(倒数第二层)的节点总数比前k-1层的和都要多,所以想要2i>n这种情况出现,一定是要位于倒数第二层的,这一层讨论地没问题,前面的可以类比推理
(下面的2k都表示2的k次方)
2^k 第k层
2^(k+1) 第k+1层
按照这个方式我们让这两层都向右侧延伸的话,k层每延伸一个,k+1层必然需要延伸两个才可以回到这个状态,所以很容易发现,只要你这么延伸,
对应的
2^k 2^(k)+1 2^k+2......
2^(k+1) 2^(k+1)+1 2^(k+1) +2 2^(k+1) +3 .......
所以满足这个规律