繁体   English   中英

一种在二进制最大堆中查找大于某个值X的所有节点的算法

[英]An algorithm to find all nodes greater than some value X in a binary max heap

这是我到目前为止所拥有的。

我们可以使用从堆的根开始的递归算法(因为根是最大数。然后,我们将检查X是否大于我们的根。如果X大于根目录我们停止了,如果没有,我们打印根目录,然后检查它是左子节点还是右子节点,依此类推...

这是一个好的算法吗? 我算法的最坏情况下的时间复杂度也将是O(N),其中N是堆中节点的数量。

这个算法很好。 实际上,它在访问最多3 * k节点时在时间复杂度方面是最优的,其中k是满足给定条件的节点数(之所以如此,是因为只有满足条件或满足条件的节点才被访问父母)。

是的,最坏的情况是O(N) 但是您不能做得更好,因为您可能需要打印堆中的所有节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM