У меня в домашней задаче есть вопрос о структуре данных:
У меня есть элементы, которые состоят из двух полей
class Element{
int point; // point on the ax
int height;
};
Мне нужно написать структуру данных со следующим интерфейсом:
**Init(N)** - any complexity You want, initialization of N elements
**Update(x,y)** - if element on the point x exists, change its height to the y, complexity O(logn)
**Highest(x)** - find the highest element on the left from the element x and on the right of the element, `complexity I need is also O(logn)`
complexity for the memory is O(n)
Может кто-нибудь помочь, как я могу создать функцию Highest
с current complexity
? заранее спасибо за любую помощь.
P.S I can use hash tables and also AVL trees
изм
спасибо вам всем, ребята, я не могу получить одну маленькую вещь, как хранить данные:
10,1
| |
5,14 17,23
| | | |
2,5 7,25 5,10 20,100
this is my tree all keys are the points on the ax X, number after comma is the height;
if I want for example to find the highest on the right from NODE (2,5), I need to pass
all nodes till the (20,100), cause this one is highest, am I wrong?