四叉树O(N)的最坏情况复杂度如何?

时间:2016-06-05 13:52:45

标签: algorithm data-structures graph time-complexity segment-tree

正如我从消息来源读到的那样,我了解到了这一点 最差情况复杂度 Quad树是O(N)当2D矩阵只有一个维度时。我无法理解其原因。 例如。当矩阵只有1xm时,我们将把它分成两半,并在log(m)stop中到达单元格。所以复杂性应该是log(m) 致谢

2 个答案:

答案 0 :(得分:3)

有几种构建四叉树的方法。如果你取一个像素矩阵或任何单位,并从中取出一个四叉树,那么它的高度确实是log(n)。

但是,如果您使用它来存储一个接一个地添加的点(类似于BST),那么如果所有点都根据一个组件排序,那么您将遇到最坏情况。在这种情况下,树的高度将为n。

这种情况的一个例子如下:

  • 以空四叉树开始
  • 插入(0,0)
  • 插入(1,1)
  • 插入(2,2)
  • 插入(3,3)
  • ...
  • 插入(n-1,n-1)

每次插入节点时,它都会进入先前插入的节点的右上角,因此每个节点只有一个子节点。你最后得到的只是一个长度为n的奇怪链表。

所以,这完全取决于你如何构建你的四叉树,并没有一个独特的方案来做到这一点。这就是插入搜索 O(n)等操作的最坏情况复杂性的原因。

答案 1 :(得分:1)

在最坏的情况下,你必须搜索到最低级别 树。考虑除了级别1的大象限/区域中的所有元素之外的所有元素的示例,并且您需要访问至少一个元素的最低级别。我需要查看您的幻灯片/书籍,但类似{{1}}的内容应该有效。