【问题标题】:What is the Time complexity of this Algorithm using AVL tree and Binary tree使用 AVL 树和二叉树的该算法的时间复杂度是多少
【发布时间】:2015-02-20 00:35:48
【问题描述】:

考虑以下算法,该算法使用二叉搜索树对包含 n 个元素的列表进行排序:

initialise t to be an empty binary search tree
for each element x in the list,
  add x to t
while t is not empty,
  remove and print the smallest element of t

这个算法的最坏情况时间复杂度是多少,如果树是 使用实现:

a) 普通的二叉搜索树?
b) AVL 树?

我的解决方案:我认为解决方案是,对于 AVL 树:O(Log N),对于 BST,它是 O(N)

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于一般的编程概念,而不是特定于代码的问题。它更适合 Programmers SE。
  • 这个问题和我正在学习的数据结构有关。
  • @keyser 我做了研究,我的研究得到了答案,但我不确定。
  • @keyser 我已经编辑了我的问题。
  • 在我看来,遍历 BST(最坏情况)需要 (N) 次才能找到最小值,但在 AVL 树中它已经平衡,因此只需要 log (n) 即可找到最小,因为旋转

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


【解决方案1】:

对于这些树的插入/删除最坏的情况是 O(n) 对于 BST 和 O(log(n)) 对于 AVL。

如果列表的长度为 n,则您执行 n 插入和 n 删除,这意味着我们将得到带有 BST 的 O(n^2) 和带有 AVL 的 O(nlog(n))

【讨论】:

    【解决方案2】:

    所有 BST 的时间复杂度为O(h),其中h 是 BST 的高度。如果列表包含n元素,则时间复杂度将为O(n),因为它将执行n insertions and deletions。而AVL是自平衡二叉搜索树,高度为O(logn),因此插入和删除的时间复杂度将是O(logn)

    【讨论】:

      猜你喜欢
      • 2018-10-15
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 2013-07-11
      • 2011-06-02
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多