30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
||||||
1 | ||||||
Удаление элемента из дерева06.08.2020, 19:40. Показов 1516. Ответов 13
Метки нет (Все метки)
Написал удаление, но оно не работает для условия когда удаляемый узел имеет двух наследников. И еще немного не пойму нужно ли рассматривать случай когда этот узел есть корень?
0
|
06.08.2020, 19:40 | |
Ответы с готовыми решениями:
13
удаление элемента бинарного дерева Удаление элемента из бинарного дерева Удаление элемента из сбалансированого бинарного дерева Реализовать удаление элемента бинарного дерева |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
06.08.2020, 20:01 | 2 | |||||
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
||||||||||||||||
06.08.2020, 20:08 [ТС] | 3 | |||||||||||||||
P.S.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
06.08.2020, 20:35 | 4 | |||||
Там не надо больше ничего делать. Если removeNode реализован правильно, то достаточно
А вообще, вот так вот - delNode->SetData(tmpMax->GetData()), с деревом не работают. Там данные вообще не обязаны иметь конструкторы копирования/перемещения. Надо менять местами именно ноды, а не копировать их данные.
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
|||||||||||
06.08.2020, 20:36 [ТС] | 5 | ||||||||||
Я заглючил, тобишь достаточно этого
Я на этом сайте нарисовал свое дерево для визуализации https://www.cs.usfca.edu/~gall... n/BST.html В общем до меня дошло, что все работало у меня правильно...Просто я накосячкил:
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
06.08.2020, 20:38 | 6 |
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
|
06.08.2020, 20:50 [ТС] | 7 |
не совсем понял, ну с теорией у меня вроде как лады, а вот реализация..да и когда я изучал как люди реализовывают везде нечто такое вижу: node->data = node2->data; Ну так для примера(я конечно не отрицаю, что не очень много изучал как кто-то это реализовывал)
Так вот моя реализация терпимо или не оч?) И Вы имеете ввиду, что нужно написать некий Swap()? Но собственно как именно ноды местами поменять в дереве, куда parent`а пихать Добавлено через 5 минут Я все-таки вставил это и закоментировал все остальное, произошла утечка памяти "с моим любимым кодом":завершает работу с кодом -1073741819.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||||||
06.08.2020, 21:12 | 8 | ||||||||||
Я ж вроде написал
Простейший вариант
Даже, наверное вот так (в любом случае не проверял)
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
|
07.08.2020, 15:54 [ТС] | 9 |
Не работает))
Я пытался понять чем это отличается от того, что делал я но не понял, Вы просто для того, что я делал написали отдельную функцию Вы же имели ввиду delete[] node; ?)
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.08.2020, 15:55 | 10 |
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
|
07.08.2020, 16:03 [ТС] | 11 |
Нет, но это же указатель, сейчас я немного в замешательстве. Разве так безопасно?
Когда delete[] node идет очистка всей памяти на которую мог ссылаться указатель, разве будет тоже самое 1 в 1 при delete node?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.08.2020, 16:23 | 12 |
delete[] нужно вызывать только если ты выделял память при помощи new[]. Иначе просто delete
0
|
30 / 14 / 7
Регистрация: 08.01.2019
Сообщений: 636
|
|
07.08.2020, 16:45 [ТС] | 13 |
Запомню.
Но блин почему это тогда пропускает компилятор да и работает так же? Наверное это великая тайна
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
07.08.2020, 16:56 | 14 |
Компилятор, в compile-time, тебе ничего и не скажет - откуда он знает как ты выделял указатель, они все одинаковые. А в runtime просто упадёт.
https://wandbox.org/permlink/WmquKlkjieM69n1s
0
|
07.08.2020, 16:56 | |
07.08.2020, 16:56 | |
Помогаю со студенческими работами здесь
14
Некорректное удаление элемента бинарного дерева поиска Дополнение списка с обоих концов Удаление элемента из дерева по указанным значением информационную атрибута Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента Описать класс «множество» (добавление и удаление элемента, пересечение, объединение и удаление множеств ) Операции над бинарными деревьями: построение дерева, обход дерева, вставка и удаление элемента дерева Удаление элемента дерева Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |