gpt4 book ai didi

algorithm - 如何根据深度优先索引计算完美二叉树中节点的级别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:44:19 25 4
gpt4 key购买 nike

我有一个完美的二叉树,即树中的每个节点要么是叶节点,要么有两个子节点,并且所有叶节点都在同一层。每个节点都有一个深度优先的索引。

(例如,在具有 3 层的树中,根节点的索引为 0,第一个 child 的索引为 1,第一个 child 的第一个 child 的索引为 2,第一个 child 的第二个 child 的索引为 3,第二个 child 的索引为 4,第二个 child 的第一个 child 有5,第二个 child 的第二个 child 有索引6。

      0
/ \
1 4
/ \ / \
2 3 5 6

)

我知道树的大小(节点数/最大级别),但只知道特定节点的索引,我需要计算它的级别(即它到根节点的距离)。我如何最有效地做到这一点?

最佳答案

这是另一个可以更容易解决这个问题的建议:

如果按广度优先顺序用索引标记节点,则无需任何遍历即可在 O(1) 时间内计算级别。因此,如果您要执行多个查询,则可以执行 O(N) BFT 并在 O(1) 时间内回答每个查询。

水平的公式是:

level = floor(log(index + 1))

log以2为底

在这棵树上试试:

       0
/ \
/ \
1 2
/ \ / \
/ \ / \
3 4 5 6

干杯。

关于algorithm - 如何根据深度优先索引计算完美二叉树中节点的级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com