【问题标题】:Complexity of a nested binary search tree嵌套二叉搜索树的复杂性
【发布时间】:2011-04-06 20:20:30
【问题描述】:

有谁知道如何计算嵌套二叉搜索树的复杂度?我已经实现了一个深度为 3 个 BST 的嵌套二叉搜索树。

编辑:我为混乱道歉,我的意思是 BST 的每个节点都指向另一个 BST 的根节点。我要求的复杂性是搜索、更新和删除(基本操作)的时间复杂度。我假设由于 BST 的时间复杂度为 O(log(n)),嵌套 BST 在搜索、更新和删除方面的时间复杂度不会有太大差异。

【问题讨论】:

  • 复杂性是什么?某些操作的时间复杂度?
  • 定义“嵌套二叉搜索树的复杂度”。就此而言,定义“嵌套二叉搜索树”(你的意思是子树吗?)
  • 复杂性是什么意思?空间?特定的操作?请展开
  • 我为混淆道歉,我的意思是 BST 的每个节点都指向另一个 BST 的根节点。我要求的复杂性是搜索、更新和删除(基本操作)的时间复杂度。我假设由于 BST 的时间复杂度为 O(log(n)),嵌套 BST 在搜索、更新和删除方面的时间复杂度不会相差太大。
  • “我的意思是 BST 的每个节点都指向另一个 BST 的根节点。” - 这就是(单个)BST 的定义 :)

标签: algorithm binary-tree binary-search-tree


【解决方案1】:

我假设“嵌套”是指特定树的每个节点都指向另一棵树的根,深度可达 3 层。

嗯,二叉搜索树的查找时间通常为 O(log n)。由于您正在进行 3 次查找,因此为 O(log a * log b * log c)。当然,这是假设它们很平衡并且一切都很好。二叉搜索树的最坏情况是 O(n)(想想它基本上是一条直线的树)。那么最坏情况的时间将是 O(a * b * c)。

为了记录,a b 和 c 分别是第一棵树、第二棵嵌套树和第三棵双重嵌套树中的元素数。

【讨论】:

  • 为什么这会赢得反对票?鉴于问题的模糊性,这是对 OP 所追求的一切的合理猜测。
  • 谢谢,@Ted Hopp。我陈述了我的假设,如果您不同意,请不要接受。
  • @Ted @Chris:因为它实际上是O(log a + log b + log c) = O(log(abc)),这是您将多个“嵌套”树视为一棵大树所获得的深度。这是有道理的,因为根据定义,任何树中的 所有 节点本身都是嵌套树。正是这个属性使得递归在处理树时非常有用。
  • @BlueRaja:你是对的!是的,毕竟它不像每个子树在下降的过程中被每个节点调用,是吗?我在考虑循环。好电话。
  • 我原本以为时间复杂度会是 O(log a * log b * log c),但我不确定这是否正确。我认为 BlueRaja 的回答会更有意义。
猜你喜欢
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-08
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多