这个是【从层序创建二叉树】中需要用到的【连接父子的两种方法】,需要根据下标连接。因此就需要【父子下标关系】。
//连接父子,两种办法:
// 1.计算父亲的下标
// 大前提:编号从0开始!
// 由2-结论,可以推出,编号j的父亲编号为(j-1)/2。
// 由2-副结论,可以推出,第j个结点的父亲是第j/2个结点。
//
// 2.计算孩子下标
// 大前提:编号从0开始!
// 结论:编号j的左孩子编号为1+2j。
// 副结论:第j个结点的左孩子是第2j个结点。
//
// [推导过程]
//
// 当前j,求第一个孩子编号:
// (1)第一个孩子编号=1+j+后面弟弟数+前面哥哥的孩子个数 (2)二叉树,前面哥哥的孩子个数=哥哥数*2
// 当前在这一层中排第几个至关重要:
// (1)第k+1个,前面k个哥哥,后面num-k-1个弟弟。(2)k = j-前i层个数 = j-(num-1)
// 第一个孩子编号 = 1 + j + (num-k-1) + k*2 = 1 + j + { num - [ j-(num-1) ] -1 } + [ j-(num-1) ] * 2
// = 1 + j + { num - [ j-num+1 ] -1 } + 2j-2num+2
// = 1 + j + { num - j + num - 1 -1 } + 2j-2num+2
// = 1 + j + { 2num - j - 2 } + 2j-2num+2
// = 1 + 2j
// 结论:编号j的左孩子编号为1+2j。【这里的j是编号,是第j+1个结点!】
//
// 副结论:第j个结点的左孩子是第2j个结点。
// 第j+1个结点的左孩子是第(2j+2)个结点。即第j个结点的左孩子是第2j个结点!
//
// 我也太棒了吧,我自己推导出来的!!!赞赞赞!!!