O(1)时间内平衡二进制搜索时间中的最小/最大元素

时间:2016-06-11 20:42:24

标签: c++ algorithm dictionary tree binary-search-tree

我知道我们可以在O(logn)时间内在二叉搜索树中找到最小值/最大值。但是c ++中的map给出了恒定时间内的最小值/最大值。我们可以使用map::begin在地图中找到最小元素,使用map::rbegin找到最大元素。这两种操作都需要恒定的时间。任何人都可以建议一种方法,使找到最小/最大O(1)?

1 个答案:

答案 0 :(得分:2)

BST未实现C ++地图。它由红黑树实施。如果要通过O(1)在BST中找到最小值/最大值,可以将两个指针存储到树中最左边的节点和最右边的节点。 否则,您可以使用minheap或maxheap找出O(1)中的最小值/最大值。