【发布时间】:2016-04-30 12:16:03
【问题描述】:
当我在 for 循环中遍历地图时
for(auto it : my_map )
cout << it.first << "\n" ;
当数据实际上以平衡树的形式存储时,我如何获得有序列表。还有这个操作O(n)的时间复杂度如何?
【问题讨论】:
-
不清楚你在问什么。按顺序遍历一棵树就做好了。给定 N 个结果,复杂度必须至少为 O(N);为什么会更多?
-
@JonathanMee 嗨,我不认为这两个问题是相似的,我很清楚地图是 bst 的实现,我的问题是如何遍历 bst,以便我们以升序排列数据.例如,如果一个数组是 sorted ,我们可以简单地想象遍历 [0]-->[1]-->[2]-->.....-->[n] 。但是在二叉树的情况下,数据根本没有安排得那么简单,让我思考当我们使用上面提到的循环时迭代器如何从一个节点到另一个节点......希望我的问题现在更清楚一点:) .
-
嗨@AlanStokes 请阅读我对乔纳森的评论。当我知道操作本身时,我只能知道操作的时间复杂度是多少:p,顺便说一句,这也是我的问题,如何遍历 bst 以使我们以升序遍历数据(关于键) 使用给定的 for 循环时。