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

How can worst case complexity of quad tree O(N)?

当我阅读资料时,我了解到 最坏情况复杂度 of 四叉树是 O(N) 当 2D 矩阵只有一个 dimension.I 我无法理解原因为了这。 例如。当矩阵只有 1xm 时,我们将它继续分成两半,将达到 log(m) 中的单元 stops.So 复杂度应为 log(m) 谢谢

在最坏的情况下,您必须向下搜索到 树。考虑以下示例:除了级别 1 的 large quadrant/region 中的一个元素之外的所有元素,并且您需要访问至少一个元素的最低级别。我需要看你的幻灯片/书,但类似于 {{0,0},{0,1},{0,2},{0,3},{0,4},{0,5},{0,6},{0,63}} 的东西应该有用。

有多种构建四叉树的方法。如果您采用像素矩阵或任何单位并从中制作四叉树,那么它的高度确实是 log(n)。

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

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

  • 从一个空的四叉树开始
  • 插入 (0,0)
  • 插入 (1,1)
  • 插入 (2,2)
  • 插入 (3,3)
  • ...
  • 插入 (n-1,n-1)

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

所以,这完全取决于你如何构建你的四叉树,并没有一个独特的方案来做到这一点。这就是为什么像 insertsearch O(n).

这样的操作的最坏情况的复杂性