【问题标题】:What's the intuition behind the equations for finding the parent and children of heaps?找到堆的父级和子级的方程式背后的直觉是什么?
【发布时间】:2012-07-15 23:06:21
【问题描述】:

查找堆的父子节点的算法是:

父级:i / 2

左孩子:2i

右孩子:2i + 1

我尝试在纸上画出数组表示,但我不确定我是否完全直观地理解它。

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    关键是元素以广度优先的方式枚举,并且索引是从 1 开始的(它们从 1 开始,而不是 0)。

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

    以3为例

    2*3   = 6   left child
    2*3+1 = 7  right child
    

    将 6 和 7 除以 2 得到 3,至少在进行整数除法的语言中是这样。

    以这种方式继续编号,您的直觉应该会起作用。通常,乘以 2 将始终给出左孩子的索引。右孩子是左孩子的继任者(+1)。整数除以 2 的工作原理相同(它“丢弃”余数。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2020-10-09
      • 2015-05-31
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多