Содержание
- 2. Определение двоичного дерева поиска Двоичное дерево называется деревом поиска, если для каждого узла дерева выполняется условие:
- 3. Пример дерева поиска У всех узлов правого поддерева произвольного узла X значения ключей данных больше, нежели
- 4. Операции над деревьями поиска Основные операции при работе с деревьями поиска не отличаются от обычного двоичного
- 5. Добавление узла в дерево поиска Если корень поддерева пуст, поместить в него заданный ключ; закончить алгоритм.
- 6. Добавление узла в дерево поиска //ToDo: сделать метод родителя виртуальным Node *addNode(Node *root, int key) override
- 7. Добавление узла в дерево поиска if (!root) { root = new Node(key); } else if (root->key()
- 8. Добавление узла в дерево поиска Задание: расставьте числа 10 20 30 40 50 в следующие деревья
- 9. Поиск узла в дереве поиска 50 70 60 90 20 30 10 5 15 40 35
- 10. Поиск узла в дереве поиска 50 70 60 90 20 30 10 5 15 40 35
- 11. Удаление узла из дерева поиска Аналогично двоичному дереву, при удалении узла из дерева поиска возможны три
- 12. Удаление узла из дерева поиска 50 70 60 90 20 30 10 5 15 40 35
- 13. Удаление узла из дерева поиска 50 70 60 90 20 30 10 5 15 40 35
- 14. Удаление узла из дерева поиска 50 70 60 90 20 30 10 5 15 40 35
- 15. Удаление узла из дерева поиска 60 70 90 20 30 10 5 15 40 35 45
- 16. Удаление узла из дерева поиска 45 70 60 90 20 30 10 5 15 40 35
- 17. Удаление узла из дерева поиска 50 70 60 90 20 30 10 5 15 40 35
- 18. Удаление узла из дерева поиска 40 70 60 90 20 30 10 5 15 35 bool
- 19. Удаление узла из дерева поиска Алгоритм определения узла r, который заменит удаляемый узел n: Тривиальные случаи:
- 20. Удаление узла из дерева поиска Замечание: аналогично можно выполнить удаление ключа, спускаясь по левой ветви от
- 21. Использование функции удаления Пусть функция удаления узла имеет сигнатуру: Node *removeNode(Node *node) И удаляет переданный узел,
- 22. Использование функции удаления Node *removeEvenNodes(Node *root) { if (root == nullptr) { return nullptr; } root->setLeftChild(removeEvenNodes(root->leftChild()));
- 23. Использование функции удаления 46 35 82 56 93 95 91 47 49 30 17 26 15
- 24. Использование функции удаления 46 35 82 56 93 95 91 47 49 30 17 26 15
- 25. Использование функции удаления 46 35 82 56 93 95 91 47 49 30 17 15 57
- 26. Использование функции удаления 46 82 56 93 95 91 47 49 35 17 15 57 root
- 27. Использование функции удаления 46 82 57 93 95 91 47 49 35 17 15 rp root
- 28. Использование функции удаления 46 91 57 93 95 47 49 35 17 15 rp root r
- 29. Использование функции удаления 47 91 57 93 95 49 35 17 15 Выход из функции
- 30. Обход дерева поиска Обход дерева поиска может выполняться по тем же правилам, что и обход любого
- 31. Л-К-П обход дерева поиска При Л-К-П обходе дерева поиска узлы будут перебираться по возрастанию ключей: 15,
- 32. Л-К-П обход дерева поиска //Пример реализации обхода //Вместо вывода в этот раз складываем ключи узлов в
- 33. Дерево поиска для символьных данных Дерево поиска может быть построено и для символьных / текстовых данных:
- 35. Скачать презентацию