【发布时间】:2021-12-10 23:12:01
【问题描述】:
我有一个数组表示法的完整二叉树(宽度优先):
[15, 10, 5, 3, 7, 5, 0, 1, 2, 3, 4, 5, 0, 0, 0]
所以所有叶子的索引是:7、8、9、10、11、12、13、14。
对于每个内部节点,我需要返回其子树中叶子的索引:
- 节点 15: 7、8、9、10、11、12、13、14
- 节点 10: 7、8、9、10
- 节点 5: 11、12、13、14
- 节点 3: 7、8
- 节点 7: 9、10
- 节点 5: 11、12
- 节点 0: 13、14。
是否存在任何公式?
【问题讨论】:
-
数组如何描绘一棵树?逻辑是什么? 19 怎么可能是这个数组中的索引?为什么索引 8 处的叶子同时是节点 3 和节点 7 下方的叶子?
-
对不起 19,现在是 9。
-
零元素 (15) 是根,第一个 (10) 和第二个 (5) 是根的子元素。第三个 (3) 和第四个 (7) 是第二个元素的子元素,依此类推。因此,叶子是:1、2、3、4、5、0、0、0,它们的索引是7、8、9、10、11、12、13、14。
-
那么为什么索引 8 既是节点 3 和节点 7 下方的叶子呢?
-
好的,它是否总是一棵完美树?还是底层不能完全填满?