mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-21 22:51:07 +08:00
Update
This commit is contained in:
@ -45,21 +45,7 @@
|
||||
|
||||

|
||||
|
||||
那么此时大家是不是应该知道了,数组如何转化成 二叉树了。**如果父节点的数组下标是i,那么它的左孩子下标就是i * 2 + 1,右孩子下标就是 i * 2 + 2**。计算过程为:
|
||||
|
||||
如果父节点在第$k$层,第$m,m \in [0,2^k]$个节点,则其左孩子所在的位置必然为$k+1$层,第$2*(m-1)+1$个节点。
|
||||
|
||||
- 计算父节点在数组中的索引:
|
||||
$$
|
||||
index_{father}=(\sum_{i=0}^{i=k-1}2^i)+m-1=2^k-1+m-1
|
||||
$$
|
||||
|
||||
- 计算左子节点在数组的索引:
|
||||
$$
|
||||
index_{left}=(\sum_{i=0}^{i=k}2^i)+2*m-1-1=2^{k+1}+2m-3
|
||||
$$
|
||||
|
||||
- 故左孩子的下表为$index_{left}=index_{father}\times2+1$,同理可得到右子孩子的索引关系。也可以直接在左子孩子的基础上`+1`。
|
||||
那么此时大家是不是应该知道了,数组如何转化成 二叉树了。**如果父节点的数组下标是i,那么它的左孩子下标就是i * 2 + 1,右孩子下标就是 i * 2 + 2**。
|
||||
|
||||
那么这里又有同学疑惑了,这些我都懂了,但我还是不知道 应该 怎么构造。
|
||||
|
||||
|
Reference in New Issue
Block a user