假设有一棵二叉树需要存储在数组中,如下所示。
7
/ \
1 10
/\
9 11
我发现在将节点存储到数组中时,公式从将根节点存储在位置0开始,然后对于索引为i
的每个节点,它的子节点放置在索引(i*2)+1和(i*2)+2
处。如果任一子节点的索引大于array.length - 1
,则该节点没有子节点。
因此,我首先将7放在位置0上,然后将其子节点1和10放在i2+1和i2+2的位置上,即1和2:
|7|1|10| | | |
0 1 2 3 4 5
现在,我卡在了节点1上,它没有任何子节点。应该把什么作为它的子节点?
是否可以设置一些默认值来表示节点的不存在,例如-1,像这样:
|7|1|10|-1|-1|9|11|
0 1 2 3 4 5 6 7