首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >平衡二叉树上预序和DFS的时间复杂度是否相同?

平衡二叉树上预序和DFS的时间复杂度是否相同?
EN

Stack Overflow用户
提问于 2017-06-26 18:12:10
回答 1查看 1.1K关注 0票数 1

我从一个答案中看到,预订是DFS的一种类型:link

然而,对于平衡二叉树,遍历树的时间复杂度为O(logn)link,而DFS的时间复杂度为O(N)link.。

那么,预顺序遍历不是DFS的一种类型,还是我误解了这个概念?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-26 18:17:54

二进制搜索树的预定、排序或后置遍历的时间复杂度总是Θ(n),其中是树中的节点数。看到这一点的一种方法是,在每种情况下,每个节点被访问一次,精确地访问一次,而每个边缘被访问两次(一次向下下降,一次向上上升)。

您在问题中已经提到,在平衡树上遍历树的时间复杂性是O(log )。这里的O(log )实际上指的是空间复杂度(需要多少辅助内存),而不是时间复杂度(将执行多少次操作)。原因是,所有这些树遍历,在它们的典型实现中,都需要存储到目前为止访问过的节点的堆栈,以便在必要时遍历能够在树中备份到更高的位置。这意味着所需的辅助空间与树的高度成正比,在平衡树中为O(log ),在任意BST中为O(n)。

因此,从这个意义上说,对您的问题最好的答案可能是"DFS,BST的顺序遍历、前置遍历和后置遍历总是花费相同的时间(Θ( n) ),空间复杂度取决于树的高度,树的高度可以介于Θ(log N)和Θ(N)之间。“

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

https://stackoverflow.com/questions/44766031

复制
相关文章

相似问题

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