代码之家  ›  专栏  ›  技术社区  ›  Braj

为什么段树需要是一个完整的二叉树?

  •  0
  • Braj  · 技术社区  · 7 年前

    在构造段树时,为什么它需要是一个完整的二叉树?我举了一些输入数组的例子,当让它们完成二叉树时,我得到了相同的最小值。那么,当完全二叉树也给出相同的结果时,为什么要把它变成完全二叉树呢。 输入阵列-1、3、5、7、9、11

    2 回复  |  直到 7 年前
        1
  •  2
  •   Amit Rastogi    7 年前

    段树的数组表示形式(例如数组1、3、5、7、9、11)可以存储为(假设范围查询正在查找最小元素)

    抱歉,这是一个懒惰的图表。

    enter image description here

    树节点的数量计算为pow*2-1,其中pow=大于或等于n的2的最小幂。

    你能分享你的段树数组表示法吗?你如何将其存储为一个完整的二叉树?

        2
  •  2
  •   varshika03    5 年前


    段树不是完整的二叉树。为了使二叉树完整,除最后一个之外的所有级别都需要完全填充。此外,对于最后一个级别,节点应尽可能左移。 考虑到具有6个元素的输入数组,树将如下所示(假设1-6个索引):- enter image description here

    然而,每个节点都有0或2个子节点,使其成为完整的二叉树。