微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。