Предположим, что у меня есть дерево AVL, и моя задача - найти следующий больший элемент данного элемента (т. Е. Его 7 для 6). Какой алгоритм я могу использовать?Найти следующий больший элемент в дереве AVL
1
A
ответ
2
Идет recursivly через узлы, и если вы обнаружили, то узел 6, то вы возвращаете глубочайшие левые ребенок ..
псевдокод:
function find_bigger_key(key, node):
if node = null then
return null
else if node.key = key then
return min_node(node)
else if key < node.key then
return find_bigger_key(key, node.left)
else
return find_bigger_key(key, node.right)
function min_node(node):
if node.ltree = null then
return node
else
return min_node(node.ltree)
Это только пример того, как вы могли это сделать, но это зависит от того, как выглядит объектная модель AVLTree.
Пример из реализации в Python:
class AVLTree(object):
def __init__(self, key, ltree=None, rtree=None):
self.key = key ; self.ltree = ltree ; self.rtree = rtree ;
# perhaps some other attributes here....
# some other methods here ...
def find_bigger_key(self, key):
if not self: return None
elif self.key == key:
if self.rtree:
return self.rtree.min_node()
else:
return None
elif self.key > key:
return self.left.find_bigger_key(key)
else:
return self.right.find_bigger_key(key)
Пример из выходного питона:
>>> # aTree is a avltree object that represents your example
>>> key = 6
>>> found_node = aTree.find_bigger_key(key)
>>> print(found_node)
7
>>> key = 7
>>> found_node = aTree.find_bigger_key(key)
>>> print(found_node)
None
+0
Это понятно, спасибо! – kmaci
Смежные вопросы
- 1. Найти следующий больший элемент в массиве
- 2. Как найти повторяющиеся значения в дереве AVL
- 3. Найти узел в дереве AVL итеративно
- 4. Поиск медианы в дереве AVL
- 5. Losing ссылки в дереве AVL
- 6. Обработка дубликатов ключей в дереве AVL
- 7. Найти максимальный элемент в дереве
- 8. Как найти следующий больший/равный текст в SQL Server
- 9. Коэффициент баланса узлов в дереве AVL
- 10. C++ - удаление узла в дереве AVL
- 11. Невозможно найти следующий элемент
- 12. только найти следующий элемент
- 13. Найти следующий/Предыдущий элемент
- 14. найти следующий элемент в JQuery
- 15. Найти следующий элемент в JQuery
- 16. Пересчет коэффициента баланса в дереве AVL
- 17. Сохранение класса Author в дереве AVL
- 18. Как идентифицировать нарушенный узел в дереве AVL?
- 19. Попытка реализовать поиск в дереве avl
- 20. Печать пути к листу в дереве AVL
- 21. глубина 2 листа в дереве AVL
- 22. Расчет коэффициента баланса узла в дереве avl
- 23. Реализация родительского узла в дереве AVL
- 24. Устранение неполадок корневого узла в дереве AVL
- 25. Что такое коэффициент баланса в дереве AVL
- 26. Найти определенный элемент в дереве DOM?
- 27. установка родительского элемента на дереве AVL
- 28. найти элемент Kth в дереве двоичного поиска
- 29. Найти элемент в дереве XML, используя ElementTree
- 30. Найти максимальный элемент в двоичном дереве
мой ответ ясно? – Oni1