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

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

当我从资料中阅读时,我了解到 当二维矩阵只有一维时,四叉树的最坏情况复杂度为 O(N)。我无法理解其中的原因。 例如。当矩阵只有 1xm 时,我们将它继续分成两半,将在 log(m) 停止时到达单元格。所以复杂度应该是 log(m) 谢谢

最佳答案

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

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

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

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

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

因此,这完全取决于您如何构建四叉树,并且没有一个独特的方案可以做到这一点。这就是为什么像 insertsearch O(n) 这样的操作在最坏情况下的复杂性。

关于algorithm - 四叉树 O(N) 的最坏情况复杂度如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37642688/

相关文章:

haskell - 将 Haskell 箭头视为图形的工具

r - R中神经网络的算法在给定的重复次数中不收敛

algorithm - 家庭作业 - 大 O 符号和计算时间

c++ - 如何使用内在函数将两个 char 数组按元素相乘并将乘法相加为 int?

c# - 在 C# 中寻找后缀树实现?

c - 生成AVL树的 key

python图形工具加载csv文件

python - 如何确定对句子含义最不重要的词

haskell - 图形模型编辑器的 Zipper 数据结构

matlab - 如何在 MATLAB 中保存带有封闭框区域的图?