首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nextInOrder迭代avl树的时间复杂度

使用nextInOrder迭代avl树的时间复杂度
EN

Stack Overflow用户
提问于 2021-04-11 21:25:32
回答 1查看 60关注 0票数 0

假设我们有一个二进制AVL-tree,每个节点都有一个指向父节点的指针。

我们还有一个名为treeSuccesor的函数,它提供下一项inorder。我们可以假设它的时间复杂度是O(log(N))

从最低值开始,到最高值结束,用它来遍历树的时间复杂度是多少?

对于给定的AVL-tree,使用treeSuccesor函数从17的节点迭代到85的节点的时间复杂度是多少?

迭代算法:

代码语言:javascript
复制
while (L != L2) // L2 is the ending node, 85 in the image
{
   L = treeSuccesor(L);
}
EN

回答 1

Stack Overflow用户

发布于 2021-04-11 22:02:52

遍历任何二叉树都可以在time O(n)中完成,因为每个链接都会传递两次:一次向下,一次向上。对于每个节点,工作是恒定的。

复杂度不是O(n log n),因为即使在AVL树的最坏情况下寻找下一个节点的工作是O(log n)的(对于一般的二叉树,它甚至是O(n)),树中所有节点的平均工作是恒定的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67045513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档