0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 12
|
||||||
1 | ||||||
удаление элемента по значению30.11.2019, 15:13. Показов 659. Ответов 6
Метки нет (Все метки)
Нужно удалить элемент по значению из бинарного дерева, я пыталась написать программу, но получилось не очень, помогите пожалуйста исправить
0
|
30.11.2019, 15:13 | |
Ответы с готовыми решениями:
6
Удаление элемента из двусвязного списка по значению Добавить функцию поиска элемента по значению в древе и удаление его с последующим сдвигом древа Не работает функция замены последнего отрицательного элемента в массиве на три элемента, равных заданному значению Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента |
"C with Classes"
|
||||||
30.11.2019, 15:23 | 2 | |||||
какая то короткая у тебя функция удаления, вот я перепечатывал с википедии метод удаления узла, принципы те же:
ссылка на источник
0
|
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 12
|
|
30.11.2019, 16:19 [ТС] | 3 |
что в данном случае элемент дерева, а что заданное значение? немного запуталась
Добавлено через 2 минуты и что значит эта строчка, у меня она красным подчеркивается
0
|
"C with Classes"
|
||||||
30.11.2019, 16:20 | 4 | |||||
вот полный код:
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
30.11.2019, 16:34 | 5 |
Из дерева элемент просто так не удалишь - после удаления узла у тебя появляются два дерева - левый и правый потомки, которые нужно слить в одно дерево.
Это новое дерево нужно присвоить соответствующему потомку (левому или правому) родительского узла. У тебя в struct Node нет указателя на родительский узел, поэтому, чтобы удалить элемент, тебе надо искать не mytree->x == zn, а mytree->l->x == zn или mytree->r->x == zn
0
|
0 / 0 / 0
Регистрация: 15.10.2019
Сообщений: 12
|
||||||
30.11.2019, 16:55 [ТС] | 6 | |||||
oleg-m1973,
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
30.11.2019, 17:03 | 7 |
Да, так будет проще. Я не вижу у тебя функции обхода дерева, он понадобится.
Тебе нужно будет найти элемент, который нужно удалить. Потом обойти его левый и правый элементы и построить из них новое дерево. Для этого понадобятся эта функция обхода и add_node Потом присвоить указатель на корень этого дерева соответствующему потомку родителя. После этого можно удалить элемент.
0
|
30.11.2019, 17:03 | |
30.11.2019, 17:03 | |
Помогаю со студенческими работами здесь
7
Описать класс «множество» (добавление и удаление элемента, пересечение, объединение и удаление множеств ) Удаление элемента списка по значению Удаление элемента массива по значению Удаление элемента по заданному значению ключевого поля Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |