AVL中的渐近运行时间插入和搜索

问题描述

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

什么是渐近运行时间?

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

b)搜索不在树中的键。

我了解的是这个高度是O(log N),因此插入AVL树的情况最糟的情况是O(log N)。搜索AVL树与BST完全没有关系,因此也需要与树的高度成比例的时间,使得O(log N)。

对吗?

解决方法

在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)