Я пытаюсь создать некоторый ранг дерева на основе AVL дерева с особыми требованиями, позволяет предположить, что у меня есть AVL дерево с узлами, каждый узел имеет 2 поля:Алгоритм для специального случая ранга дерева
id, priority
мое AVL дерево сортируется по идентификатору, а также у меня есть функция:
foo(currentId, delta)
который понижает приоритет всех идентификаторов, которые меньше или равны currentId
по delta
эта функция должна работать со сложностью O (журнал n), , поэтому my qu estion - какая дополнительная информация мне нужна для хранения, чтобы иметь возможность поместить узел с highest priority
на любом этапе with complexity O(1)
(после использования foo тоже!).
P.S.
Я попытался сохранить информацию о максимальном приоритете в правом поддереве, максимальный приоритет в левом поддереве, но после foo
ему нужно много изменений. Это займет больше, чем просто O (log n). Заранее благодарим за хорошие идеи или хорошие книги о деревьях.
Любые причины использования деревьев AVL? Кажется, что различные реализации очереди очередности могут быть приятнее здесь. – templatetypedef
@templatetypedef: можете ли вы дать мне ссылку на полезную информацию? не знаю, о чем вы говорите ... – rookie
Вы называете 'foo()' после каждого поп? Какие значения 'delta' вы используете относительно' id'? Прошедший пример того, что вы пытаетесь достичь, поможет нам понять, чего вы пытаетесь достичь здесь. – marcog