【问题标题】:Asymptotic running time insertion and searching in AVLAVL中的渐近运行时间插入和搜索
【发布时间】:2021-01-28 04:34:10
【问题描述】:

我正在学习 AVL 树。 AVL 树是通过旋转来平衡自身的二叉搜索树。因为它们是平衡的,所以查询时间是 O(log n)。但是添加条目的顺序对于避免最坏情况下每次插入的 O(log n) 旋转也很重要。

什么是渐近运行时间:

(a) 在 AVL 树中添加 n 个具有连续键的条目(插入所有的时间,而不是每一个)

b) 搜索不在树中的键。

我的理解是这个高度是 O(log N),所以插入 AVL 树的最坏情况是 O(log N)。搜索 AVL 树与 BST 完全不同,因此也需要与树的高度成正比的时间,使得 O(log N)。

对吗?

【问题讨论】:

    标签: algorithm data-structures avl-tree


    【解决方案1】:

    在 AVL 中插入最多需要一次旋转 O(log n) 次旋转(如果单独计算两次旋转则需要两次)。渐近插入的顺序无关紧要,因为旋转需要恒定的时间。

    a) 插入 n 的成本 = n*(找到合适的插入位置的成本+实际创建和插入节点的成本+如果需要的话)=n*( O(log n)+O(1)+O (1))=O(n log n)

    b) 搜索一个元素是 O(log n),因为树是平衡的

    c) 删除单个元素最多需要 O(log n) 次旋转,因此删除的复杂度也是 O(log n)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多