我知道我们可以在O(logn)时间内在二叉搜索树中找到最小值/最大值。但是c ++中的map给出了恒定时间内的最小值/最大值。我们可以使用map::begin在地图中找到最小元素,使用map::rbegin找到最大元素。这两种操作都需要恒定的时间。任何人都可以建议一种方法,使找到最小/最大O(1)?
答案 0 :(得分:2)
BST未实现C ++地图。它由红黑树实施。如果要通过O(1)在BST中找到最小值/最大值,可以将两个指针存储到树中最左边的节点和最右边的节点。 否则,您可以使用minheap或maxheap找出O(1)中的最小值/最大值。