Если у вас есть дерево AVL, как лучше всего получить из него медиану? Медиана будет определена как элемент с индексом ceil(n/2) (индекс начинается с 1) в отсортированном списке.
Итак, если список был
1 3 5 7 8
медиана равна 5. Если бы список был
1 3 5 7 8 10
медиана 5.
Если вы можете увеличить дерево, я думаю, лучше всего сообщить каждому узлу размер (количество узлов) поддерева (т.е. 1 + левый.размер + правый.размер). Используя это, лучший способ, который я могу придумать, - это медианный поиск O (lg n) времени, потому что вы можете проходить, сравнивая индексы.
Есть ли способ лучше?