TreeMap и итераторы
От: f95.2  
Дата: 18.05.20 19:04
Оценка:
Добрый вечер.

Я хочу взять сбалансированное двоичное дерево, и делать с ним вот какие вещи:
1. Найти элемент по ключу, и, если элемент имеет "плохое" значение, то заменить его.
2. Найти элемент по ключу, и заменить значение этого элемента и парочки соседей с каждой стороны.

Вроде бы не должно быть проблем:
В первом случае находим элемент, запоминаем указатель/итератор и с ним работаем. Т.е. тут надо сделать один поиск.
Во втором — также находим элемент, запоминаем указатель/итератор, после чего по стандартному алгориму обход дерева находим соседей.

В джаве есть встроенное сбалансированное дерево TreeMap, но я не вижу у него подходящих методов.
Поиск по ключу есть (get/replace), но он возвращает значение. Чтобы заменить элемент в дереве, нужно делать еще один поиск.
Также вроде бы нет возможности взять соседний элемент, надо делать еще один поиск.
Да, в худшем случае взятие соседнего элемента имеет логарифмическую сложность, как и поиск по ключу,
но ведь далеко не каждый случай худший.

Я просто не вижу нужных методов, или их действительно нет по какой-то причине?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.