Как удалить из двоичного дерева поиска в Лиспе

голоса
1

Как я могу удалить узел из BST?

Мне нужен алгоритм, чтобы сделать это в д-схеме.

Задан 07/12/2010 в 09:09
источник пользователем
На других языках...                            


2 ответов

голоса
2

Предполагая , что ваше бинарное дерево поиска использует прямую минусы клетку с содержанием только в листах, и если вы работаете на домашнем задании: Вы можете использовать set-car!или set-cdr!изменять содержимое ячейки конса.

Ответил 07/12/2010 в 14:51
источник пользователем

голоса
3

Вы в основном бросить BST у вас есть сейчас, и создать новый SANS элемент.

Вы можете сделать это рекурсивно спускаясь по дереву. Если элемент меньше корневой элемент данных, создать BST, чей корень и больше, чем ветвь копируются из того, что у вас есть сейчас, но чей менее чем филиал является результатом рекурсивного вызова.

Это очень похоже на то, как вы добавить узел, но когда вы получите тот, который вы ищете, объединить два BSTs ниже него, и возвращает результат. Есть, конечно, существующие вопросы о том, как сделать это уже.

Ответил 08/12/2010 в 03:09
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more