Тёмный

#20. Реализация бинарного дерева на Python | Структуры данных 

selfedu
Подписаться 159 тыс.
Просмотров 32 тыс.
50% 1

Обучающий курс: stepik.org/a/1...
Инфо-сайт: proproprogs.ru...
Пример реализации бинарного дерева на языке Python. Добавление/удаление вершин дерева, обход дерева в глубину и ширину.

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 64   
@jomalaki1201
@jomalaki1201 26 дней назад
умница человек! На молекулы все разобрал и разжевал! Все понятно! Спасибо огромное, если стану программистом в долгу не останусь 🙏
@МаксимМакаров-о5ы
Великолепное исполнения и подача, все твои уроки понятны!
@nickolasmaslow7041
@nickolasmaslow7041 Год назад
Очень круто объясняешь, хотел бы чтобы у меня был такой преподаватель в ВУЗе
@ЕрвандАгаджанян-в3к
Шикарнейшее объяснение! Спасибо!
@ПавелГолубев-п8о
И снова годнота) Спасибо Единственный минус, который я для себя нашёл в бинарных деревьях, это то, что их долго создавать для большого кол-во данных, так как каждый новый элемент начинает поиск для вставки с головы
@selfedu_rus
@selfedu_rus Год назад
да, здесь в среднем логарифмическое время добавления нового элемента
@7IdE
@7IdE Год назад
Шикарный видос, все как обычно. Собсно, зашел сюда целенаправленно ради 3-ьего случая удаления - самостоятельно не особо получилось его реализовать. Да и просто посмотреть на твою реализацию этого дела. Но одну ремарку, все же, оставлю. Метод __del_one_child лучше бы переписать вот так: def __del_one_child(self, current, parent): if parent.left == current: parent.left = current.left or current.right else: parent.right = current.left or current.right И красивше, и читабельнее, и привет синтаксическому сахару Питона. А так видео супер, все как обычно!
@7IdE
@7IdE Год назад
Ну и еще одна ремарка сверху - нейминги. :D sr, pr, p, ptsr - это же вообще жесть. :D
@МихайлоДвалі
@МихайлоДвалі Год назад
@@7IdE пздц, я чуть не здох пока пытался понять
@artembelsky680
@artembelsky680 Год назад
@@МихайлоДвалі есть такая хня бро)
@siarheiulas6969
@siarheiulas6969 Год назад
Спасибо! Замечательная подача материала!
@nikitakolchanov350
@nikitakolchanov350 Год назад
Спасибо тебе, что ты есть ❤
@mr.alians5553
@mr.alians5553 Год назад
Очень классный урок, большое спасибо. Но есть один момент, если в корне будет стоять минимальное значение - то вызов функции для его удаления выдаст ошибку. Что бы ее исправить, нужно дописать в функцию del_node, а именно в elif для удаления элемента с одним потомком, одно условие, что бы получилось вот так: elif s.left is None or s.right is None: if s == p: self.root = s.right else: self.__del_one_child(s, p) Тогда все заработает )
@mingboevnurullo
@mingboevnurullo 10 месяцев назад
Спасибо большое за урок
@АртемКлимов-ц8ъ
Сергей, спасибо огромное! Как всегда, на высочайшем уровне ))) Жаль кода на гитхабе не выложено, но ничего, руками напишу ))))
@selfedu_rus
@selfedu_rus Год назад
Текстовые варианты занятий здесь: proproprogs.ru/structure_data
@АртемКлимов-ц8ъ
@@selfedu_rus Оу, точно! Спасибо ))
@the_lazy_man1
@the_lazy_man1 Год назад
Спасибо большое. Было очень интересно.
@Роман-щ3д8я
@Роман-щ3д8я Год назад
Сергей, огромная благодарность за прекрасные уроки! Мне лично не хватает только одного - ссылок на первоисточники.
@ninamanuylova
@ninamanuylova Год назад
спасибо за видео! очень полезно, долго искала эту тему.
@cashhh7776
@cashhh7776 Год назад
Спасибо автору!
@uultayarstankulova6132
@uultayarstankulova6132 Год назад
Спасибо большое!!!
@everlastingsummer2044
@everlastingsummer2044 Год назад
спасибо большое!
@alexeyxopyc2471
@alexeyxopyc2471 Год назад
спасибо за видео!
@alexanderevgrafov9598
@alexanderevgrafov9598 Год назад
Спасибо!
@franklinfoster4170
@franklinfoster4170 Год назад
Два нижних подчёркивания перед переменной делает ее приватной, а что значит два нижних подчёркивания после переменной?
@НиязӘліпбай
@НиязӘліпбай 9 месяцев назад
append не будет работать так как вы идёте до значения None, а потом возвращаете None, parent, False. Соответственно s нет и не с чем связывать. Попробуйте перепишите код до 10 минуты и проверьте
@MrPalianytsia
@MrPalianytsia Год назад
Классно, но я так и не понял для чего они нужны эти деревья.
@selfedu_rus
@selfedu_rus Год назад
об этом дальше
@FriskesTV
@FriskesTV Год назад
Здравствуйте Сергей, подскажите пожалуйста какую вы используете программу для того чтобы рисовать на экране?
@selfedu_rus
@selfedu_rus Год назад
Epic Pen
@FriskesTV
@FriskesTV Год назад
@@selfedu_rus благодарю за столь быстрый ответ!
@whale5219
@whale5219 Год назад
Сергей, большое спасибо, НО научитесь нормально называть переменные.
@АртемКлимов-ц8ъ
Кстати, все падает, если попытаться удалить корень ))
@MrLeyt1125
@MrLeyt1125 5 месяцев назад
Спасибо, жаль нет реализации на Си
@nikitun85
@nikitun85 Год назад
Сергей, как всегда, топчик! Жирнющий лайк! Хотел поинтересоваться, не собираетесь ли вы дублировать канал на каком-нибудь импортозамещенном видеохостинге? Например, Рутюб, Его хоть и заслуженно ругают, он все-таки он постепенно облагораживается. В смысле качества работы, а не контента. К тому же там организован целый раздел для обучающих видео. Пока почти пустующий. Ваши лекции органично бы туда вписались. А то я уже постепенно выкачиваю с вашего канала бесценный дидактический материал к себе на жесткий диск )). Вдруг все-таки Ютюб отключат. Конечно, есть впн, но и их тоже постепенно прикрывают, плюс у скорости, как правило, не те.
@selfedu_rus
@selfedu_rus Год назад
Я не думаю, что отключат, если бы хотели уже бы сделали, а так есть шанс, что в таком виде останется. Альтернатив реальных ютубу нет и понятно почему - слишком сложный сервис и с нуля быстро его не повторишь. Будем надеяться, что ютуб продолжит работу.
@Artem-er3ie
@Artem-er3ie Год назад
Слава Украине!
@timikys2
@timikys2 11 месяцев назад
@@Artem-er3ie Причем здесь это? И в чем слава то? Нищая окраина, без экономики, без половины населения и вся в долгах на десятилетия вперед
@uultayarstankulova6132
@uultayarstankulova6132 Год назад
Скажите пожалуйста, это получается сбаланированное бинарное дерево?
@selfedu_rus
@selfedu_rus Год назад
Нет, балансировка здесь не выполняется.
@YT-rv6uo
@YT-rv6uo Год назад
Line 48 in t = tree() Name 'tree' is not defined.Did you mean:'Tree' Что я не так написал? Код проверял
@YT-rv6uo
@YT-rv6uo Год назад
Еще line 52 in module t.append(Node(x)) AttributeEror'tree' object has no attribute 'append'
@Artem-er3ie
@Artem-er3ie Год назад
Напиши Tree с большой
@umni_kot
@umni_kot Год назад
для чего перед __find два подчеркивания ?
@selfedu_rus
@selfedu_rus Год назад
приватный метод
@umni_kot
@umni_kot Год назад
@@selfedu_rus спс почитаю о нем
@cskamoskow2004
@cskamoskow2004 Год назад
10:01
@YT-rv6uo
@YT-rv6uo Год назад
line 52 in module t.append(Node(x)) AttributeEror'tree' object has no attribute 'append' Что делать весь код проверил
@f1aym574
@f1aym574 Год назад
решил?
@YT-rv6uo
@YT-rv6uo Год назад
@@f1aym574 неа
@Artem-er3ie
@Artem-er3ie Год назад
Возможно ты при создания класса написал три с Большой. Попробуй t= Tree()
@veraburak8049
@veraburak8049 Год назад
norm
@ЮрийКлименко-к3щ
Я думаю, что рекурсивно искать элементы это плохая идея, ведь мы подразумеваем, что наше дерево может быть бесконечного размера, а значит теоретически мы получим проблемы с памятью, переполнение стека и достижение максимального значения глубины рекурсии (это можно обойти, но все же).
@ВикторК-н2к
@ВикторК-н2к Год назад
То что рекурсия занимает много памяти - это очевидный факт. Чтобы решить эту проблему придумали красно-чёрные деревья в них не используется рекурсия. Автор написал реализацию обычного, несбалансированного бинарного дерева
@ЮрийКлименко-к3щ
@@ВикторК-н2к вообще не поняли о чем я говорю, и смешали все в кучу. И обычное бинарное дерево и красно-черное дерево не может быть ни рекурсивным, ни итеративным, речь об алгоритме поиска элемента. Его следует писать итеративно (и не важно какое дерево), так как если вы будете использовать рекурсию, максимальная длина ветки дерева будет ограничена.
@JuLia-mr7rn
@JuLia-mr7rn 8 месяцев назад
Метод Апэнд
@mrfang5908
@mrfang5908 Год назад
сложновато однако)
@igorseledtsov7345
@igorseledtsov7345 3 месяца назад
ну нельзя так... потрясающе безграмотно РПоказано как не надо делать
@АрсланОчиров-щ5д
Спасибо автору 👍
@ЭльдарЭмиров-ю4ж
можно код??
@milenko1642
@milenko1642 Год назад
Прекрасный код, с самого утра, хотя с самого вчера нет сил)
@Лена-в1н6ы
@Лена-в1н6ы 7 месяцев назад
Спасибо! Поясните, пожалуйста, как метод __find поймет при возврате node и parent на что указывают эти переменные? Мы же не присвоили им ничего внутри кода?🧐
@СагсагСаб
@СагсагСаб Месяц назад
в конце функции __find возвращается node, parent, False, а в функции append где вызывается сама функция __find так же 3 значения s, p, fl_find, соответсвенно s = node, p = parent, fl_find = False
Далее
БЕЛКА СЬЕЛА КОТЕНКА?#cat
00:13
Просмотров 1,6 млн