【问题标题】:Cost search operation in a Binary tree?二叉树中的成本搜索操作?
【发布时间】:2012-04-09 21:49:41
【问题描述】:

在二叉树中进行搜索操作的成本是多少?是O(n)吗?

【问题讨论】:

  • 虽然给出了答案,但是如果您在 Google 或 Stack Overflow 的搜索框中输入您的问题,您可以轻松获得问题的答案。
  • 你的意思是二叉搜索树吗?

标签: algorithm search data-structures binary-tree complexity-theory


【解决方案1】:
        Average     Worst case
Space   O(n)        O(n)
Search  O(log n)    O(n)
Insert  O(log n)    O(n)
Delete  O(log n)    O(n)

【讨论】:

  • @AndreasBrinck,当你有退化的树时(换句话说,每个节点只有 1 个子节点)。所以,我们可以认为这棵树变成了链表。
  • 是的,我愚蠢地把这个问题读成了二分搜索(在一个数组中)。对不起。
【解决方案2】:

是的,它是 O(n),因为它是二叉树而不是二叉搜索树。

由于无法判断在“二叉树”中分支的方向(左或右),因此我们必须在最坏的情况下搜索整棵树。

【讨论】:

    【解决方案3】:

    搜索元素的平均情况:O(log n)

    最坏情况:O(n)

    如果您需要更好的(对数)最坏情况运行复杂性,您可以检查平衡树(AVL、红黑)。

    【讨论】:

      【解决方案4】:

      是的,这将是 O(n),因为你在这棵树中没有像二叉搜索树那样的排序条件,所以你必须遍历整棵树,就像数组一样

      【讨论】:

        【解决方案5】:

        根据 Robert Sedgewick 的《算法分析导论》一书,如果这棵二叉树是由大小为 N 的随机排列构造的,那么平均成功搜索为 2H_N − 3 + 2H_N /N = 2ln(N)+O(1),一次不成功搜索的平均值是2H_{N+1} − 2 = 2ln(N)+O(1)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-17
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 2016-06-05
          相关资源
          最近更新 更多