[leetcode]Binary Search Tree Iterator。什么叫平均时间复杂度为O(1)的函数?

发布于 2022-09-03 00:37:51 字数 413 浏览 14 评论 0

https://leetcode.com/problems/binary-search-tree-iterator/

本人比较菜,一般看到这个就只想到,这个题目要求从小到大遍历一个二叉搜索树 ,当然就是中序遍历了。但是始终搞不明白题目的要求

next() and hasNext() should run in average O(1) time and uses O(h) memory, where h is the height of the tree.

什么叫 in average O(1) time ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

烟沫凡尘 2022-09-10 00:37:51

举个例子,分析下列代码的时间复杂度:

def arrange(arr):
    for i in range(0, len(arr)):
        while arr[i] != i:
            next_pos = arr[i]
            arr[i], arr[next_pos] = arr[next_pos], arr[i]
    return arr

print arrange([0,3,5,1,4,2])

这个代码是把长度为L,范围从0...L-1的整数数组进行排序。

虽然有循环嵌套,但是这个代码的复杂度是O(n),因为while内的语句最多执行n-1次,所以均摊给外面的for循环,每个循环平均执行一次。也就是说while的复杂度均摊下来是O(1)的。

打小就很酷 2022-09-10 00:37:51

平均时间复杂度为常数,与问题复杂度(这里指树的高度)无关

韶华倾负 2022-09-10 00:37:51

不知道楼主怎么看出是要求中序遍历的。。

小傻瓜 2022-09-10 00:37:51

楼主需要补充算法的基础知识,建议先找本算法的基础教材看一遍,推荐《算法导论》

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文