转博客园(地址):http://www.cnblogs.com/justforgl/archive/2012/07/27/2612364.html
先看一下这个图,可以找到一定的规律:
- 数组A的下标 等于 这一列上最高的部分数组C的下标
- 满二叉树的每一个结点对应数组A中的一个元素
A[1] = C[1]
A[2] = C[1] + C[2]
A[3] = C[3]
A[4] = C[1] + C[2] + C[3] + C[4]
A[5] = C[5]
A[6] = C[5] + C[6]
A[7] = C[7]
A[8] = C[1] + C[2] + C[3] + C[4] + C[5] + C[6] + C[7] + C[8]
而确定C有几项,又该如何确定?
感觉太巧妙啦。居然可以利用二进制来确定项数
从1 ~ 8的二进制列举
0001 项数1 0个0 2^0
0010 项数2 1个0 2^1
0011 项数1 0个0 2^0
0100 项数4 2个0 2^2
0101 项数1 0个0 2^0
0110 项数2 1个0 2^1
0111 项数1 0个0 2^0
1000 项数8 3个0 2^3
2 ^ x = i & (- i)
再续。。。。。。。。