在构造段树时,为什么它需要是一个完整的二叉树?我举了一些输入数组的例子,当让它们完成二叉树时,我得到了相同的最小值。那么,当完全二叉树也给出相同的结果时,为什么要把它变成完全二叉树呢。 输入阵列-1、3、5、7、9、11
段树的数组表示形式(例如数组1、3、5、7、9、11)可以存储为(假设范围查询正在查找最小元素)
抱歉,这是一个懒惰的图表。
树节点的数量计算为pow*2-1,其中pow=大于或等于n的2的最小幂。
你能分享你的段树数组表示法吗?你如何将其存储为一个完整的二叉树?
段树不是完整的二叉树。为了使二叉树完整,除最后一个之外的所有级别都需要完全填充。此外,对于最后一个级别,节点应尽可能左移。 考虑到具有6个元素的输入数组,树将如下所示(假设1-6个索引):-
然而,每个节点都有0或2个子节点,使其成为完整的二叉树。