Я хочу увеличить двоичное дерево поиска, чтобы поиск, вставка и удаление сохранялись в O (h), а затем Я хочу реализовать алгоритм для нахождения суммы всех значений узлов в заданном диапазоне.Найдите сумму узлов в двоичном дереве поиска, значение которого находится в определенном диапазоне, дополняя BST
ответ
Если вы добавите дополнительную структуру данных в свой класс BST, в частности, Hashmap
или Hashtable
. Ваши keys
будут разными номерами вашего BST и вашим values
количеством вхождений для каждого. BST search(...)
не будет влиять, однако insert(...)
и delete(...)
потребуют незначительных изменений кода.
Вставка
При добавлении узлов к проверке BST, чтобы увидеть, что если значение существует в Hashmap в качестве ключа. Если существует приращение счетчика вхождений на 1. Если он не существует добавить его в Hashmap с начальным значением 1.
Удалить
При удалении уменьшает количество вхождений в Hashmap (предполагается, что ваш не говорят, чтобы удалить узел, который не существует)
Sum
Теперь для суммы F соборование
sum(int start, int end)
Вы можете итеративно проверить HashMap, чтобы увидеть, какие существуют числа из диапазона в вашей карте и их количество вхождений. Используя это, вы можете построить свою сумму, суммируя все значения на карте, которые находятся в диапазоне, умноженном на их количество вхождений.
Сложности
пространство: О (п) Время метода Сумма: O (размер диапазона).
На все остальные временные сложности не влияет.
Вы не упомянули о смене места, поэтому, надеюсь, все в порядке. Мне очень интересно узнать, можете ли вы каким-то образом использовать свойства BST для решения этого более эффективно, для меня ничего не приходит в голову.
- 1. Подсчет узлов в двоичном дереве поиска
- 2. Многопоточная вставка в двоичном дереве поиска (BST)
- 3. Подсчет узлов в двоичном дереве поиска
- 4. Подсчитать количество узлов в определенном диапазоне в дереве AVL
- 5. Вставка в двоичном дереве поиска против вставки в двоичном дереве
- 6. Подсчет узлов в двоичном дереве поиска
- 7. Подсчет количества узлов в двоичном дереве поиска
- 8. Удаление узлов в двоичном дереве поиска в python?
- 9. Получение числа узлов в двоичном дереве поиска
- 10. Удаление нескольких узлов в двоичном дереве поиска
- 11. Повторяющиеся записи в двоичном дереве поиска
- 12. Поиск в двоичном дереве (BT) Not BST
- 13. Подсчет узлов в двоичном дереве поиска в Python
- 14. Вставка в двоичном дереве поиска
- 15. Наименьший путь значения в двоичном дереве поиска
- 16. Исключение: удаление узла в двоичном дереве поиска
- 17. ошибка в сумме значение в двоичном дереве поиска
- 18. Сумма каждой ветви в двоичном дереве поиска
- 19. Подсчет узлов в двоичном дереве
- 20. Количество трех типов узлов в двоичном дереве поиска (рекурсивно)
- 21. Обновление данных в двоичном дереве поиска
- 22. Глубина vs Расстояние в двоичном дереве поиска
- 23. Удалить минимальное значение в двоичном дереве поиска
- 24. Добавить значения узлов в двоичном дереве
- 25. Дубликаты в двоичном дереве поиска
- 26. Удаление узла в двоичном дереве поиска
- 27. Найти родителя в двоичном дереве поиска?
- 28. Найти местоположение узлов в двоичном дереве
- 29. Количество листовых узлов в полном двоичном дереве
- 30. Псевдокод для поиска в двоичном дереве
Звучит великолепно. Что вы пробовали? С какой частью у вас проблемы. Существует уже много документации о бинарных деревьях, на которые вы можете ссылаться. – miltonb
Ну, я огляделся, и единственное, что было близко к этой проблеме, я нашел, используя дерево сегментов, которое не является дополнением. Я также нашел решение, которое в основном использовало дерево AVL. Но я хочу увеличить BST, а затем найти сумму узлов в узком диапазоне. Я попытался добавить кумулятивную сумму к каждому узлу снизу вверх, но после этого я застрял. На самом деле я понятия не имею. –