КАК РАБОТАЮТ ДЕРЕВЬЯ | СТРУКТУРЫ ДАННЫХ

  Рет қаралды 145,916

Alek OS

Alek OS

Күн бұрын

clck.ru/33qcFE - развивайте навыки в работе с данными на курсах от Яндекс Практикума
Создавай будущее вместе с Тинькофф - l.tinkoff.ru/alekosmarch/?Ldt...
КАК РАБОТАЮТ ДЕРЕВЬЯ | СТРУКТУРЫ ДАННЫХ
Подписывайся в соц. сетях:
Телеграм - t.me/Alek_OS
ВК - alekos1
❤️ Поддержка канала:
Бусти - boosty.to/alekos
Юмани - yoomoney.ru/to/410011179144828
✔️ Полезные ссылки:
Основы программирования - • КАК РАБОТАЕТ ПАМЯТЬ КО...
Полезно знать - • ЯЗЫКИ ПРОГРАММИРОВАНИЯ...
Алгоритмы и структуры данных - • УСКОРЬ СВОЙ КОД В МИЛЛ...
Мысли Алека - • КАК ИЗУЧАТЬ ПРОГРАММИР...
00:00 Введение
01:37 Яндекс Практикум
03:18 Двоичное дерево поиска
03:58 Двоичное дерево - вставка, поиск
05:45 Двоичное дерево - удаление
07:14 Обходы дерева
08:15 Работа в Тинькофф
09:49 АВЛ-дерево - вставка
16:08 АВЛ-дерево - удаление
16:44 Красно-чёрное дерево - вставка
20:34 Красно-чёрное дерево - удаление

Пікірлер: 195
@AlekOS
@AlekOS Жыл бұрын
Подписывайся в телеграм-канал: t.me/Alek_OS
@dmbabaycev123
@dmbabaycev123 Жыл бұрын
Начался список с 1, не с 0
@dmbabaycev123
@dmbabaycev123 Жыл бұрын
За это лайк)
@Cheeckoff
@Cheeckoff Жыл бұрын
- Что делаешь? - Перекрашиваю чёрных детей. - Расист?! - Программист.
@bartbelrigvardo5216
@bartbelrigvardo5216 Жыл бұрын
🤣🤣🤣 Это за гранью добра и зла
@abuser-je3gl4vc1c
@abuser-je3gl4vc1c 4 ай бұрын
- Что делаешь? - Делаю деда красным и совершаю левый поворот. - Коммунист?! - Программист.
@user-jx8pe4yz6q
@user-jx8pe4yz6q Жыл бұрын
Не расстраивайтесь если не поняли ролик. Никто никогда его не поймет с первого раза. Такие ролики лучше воспринимать не как обучающие а как справочные.
@user-eb9cv3wx8b
@user-eb9cv3wx8b 8 ай бұрын
я с первого раза все понял, а ты лох ))))))))))))
@user-ud1fw5zc8i
@user-ud1fw5zc8i 4 ай бұрын
По фактам
@user-yd9xy3rb4x
@user-yd9xy3rb4x Ай бұрын
Я понял с первого раза ролик. Даже слишком простой, сеньор ios, магистк комтерных наук
@user-yj2cq4fm7z
@user-yj2cq4fm7z 6 күн бұрын
@@user-yd9xy3rb4x держи в курсе
@xagent
@xagent Жыл бұрын
Недавно наткнулся на ваш канал. Это просто супер. На фоне всего остального шлака по теме it, который существует на ютубе, ваш канал прям выделяется. Мне очень нравится ваш фундаментальный подход. Не тупо освоить синтаксис какого нибудь языка программирования, а дать именно теоретические основы программной инженерии. Да еще и в интерактивном и наглядном формате, с анимациями, графиками. Желаю развития каналу.
@DemetriuszStrykowski
@DemetriuszStrykowski Жыл бұрын
Точно, канал просто супер!!!
@user-ot5iy5es4l
@user-ot5iy5es4l Жыл бұрын
Вот так если задуматься, какую же титаническую работу автор воплотил, написать грамотно текст, визуализировать все сказанное…лайк!
@whitefox1777
@whitefox1777 Жыл бұрын
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
@p.al.trofimov
@p.al.trofimov Жыл бұрын
Лучший из всех каналов на рунете по IT тематике. Спасибо за контент, за качественную информацию и высокий уровень подготовки ролика 👍
@BigRock379
@BigRock379 8 ай бұрын
Алекс, спасибо тебе! Мне безумно заходить этот контент, я под него стараюсь расслабляться и при этом продолжать вникать во все тонкости программирования, с такой визуализацией и музыкальным сопровождением уносит в транс порой..
@user-ov1xr1ip7i
@user-ov1xr1ip7i Жыл бұрын
Недавно сам писал реализацию красно-черного дерева, столько статей пересмотрел и видосов,эх,где ты был пару недель назад( Все очень классно и понятно!
@viska_tru
@viska_tru Жыл бұрын
Сложно, ничего непонятно, но очень интересно
@pashkiewich
@pashkiewich Жыл бұрын
Как всегда кратко и информативно. Спасибо за пищу для мозга )
@alekseykhromov259
@alekseykhromov259 Жыл бұрын
Какой же годный контент… Большое спасибо!!!
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov 7 ай бұрын
Alek, благодарю!! 👍 Инфографика великолепна! 🔥
@MicP8
@MicP8 Жыл бұрын
7:10 - если при удалении узла, с двумя детьми, мы используем максимальный элемент слева(maxInLeft), то и удалять надо слева : node.left = delete(node.left, maxInLeft.key). На слайдах : node.right = delete(node.right, maxInLeft.key). Аналогичная неточность в коде для AVL Tree
@user-ul9hq7xm2q
@user-ul9hq7xm2q 2 ай бұрын
Верно. Хорошее замечание
@arswarog
@arswarog Жыл бұрын
круто, так быстро и подробно про деревья я еще не видел материала
@user-jg7ly1ib2z
@user-jg7ly1ib2z Жыл бұрын
Очень качественный контент, спасибо
@sashakuznechkin
@sashakuznechkin Жыл бұрын
Спасибо за видео!!!
@user-fy3iv9dp7g
@user-fy3iv9dp7g Жыл бұрын
Спасибо за видео. Лайк👍
@matweyrybakovskiy2952
@matweyrybakovskiy2952 Жыл бұрын
Отличный контент! Спасибо!
@andarworld8985
@andarworld8985 Жыл бұрын
Спасибо за видеоролик!
@cepmadbrozzer4448
@cepmadbrozzer4448 Жыл бұрын
Не стоило ли указать, что видео исключительно про бинарные деревья? А то складывается ощущение, что других и не существует. Я, к примеру, всё ждал, каким будет разбор B+Tree, чтобы в очередной итерации попробовать снова обуздать принцип работы InnoDB. Но видео очень залипательное, спасибо! Очень низкоуровнево, прям как я люблю.
@alexshturmovik3037
@alexshturmovik3037 Жыл бұрын
согласен, эту структуру данных как-то обходят стороной, иногда даже BTree расшифровывают как Binary Tree(
@DenysHolovin
@DenysHolovin 9 ай бұрын
Очень низкоуровнево, прям как я не люблю :) Но было интересно
@rechw769
@rechw769 Жыл бұрын
как вовремя! как раз разбирался с ними! спасибо!
@leomysky
@leomysky 11 ай бұрын
Спасибо за видео Очень круто и фундаментально
@user-ll7mx9mn8z
@user-ll7mx9mn8z Жыл бұрын
Спасибо за очередное годное видео
@nikolaiandrianov1856
@nikolaiandrianov1856 Жыл бұрын
Прекрасно!!!
@aidamur
@aidamur Жыл бұрын
огромное спасибо за видео
@zadrot64
@zadrot64 Жыл бұрын
Сними ролик про B-trees плз) Нормального ролика найти не могу, а они чаще используются для баз данных....
@laranMQR
@laranMQR Жыл бұрын
Алекс, привет. Мне кажется, что на 7:05 также нужно и слева искать значение ключа заменяющего узла, чтобы его удалить. Т.е. просто нужно добавить node.left = delete(node.left, maxInLeft.key); . Переписал твой код и попробовал на датасете от 5 до 11 удалить вершину 8, то с кодом из примера 7 станет вершиной и также останется лепестком, поэтому нужно и для левой части делать проверку (удаление).
@ghjklfghk
@ghjklfghk Жыл бұрын
О. Новенький видосик. Усваиваем
@prokaza97
@prokaza97 6 ай бұрын
Мозг расплавится понять это с первого раза. Автору респект, что не только вник и разобрался, но и иллюстрировал и разжевал. Но осознать это всё очень сложно. Только базовые идеи
@vladimirzabaro6795
@vladimirzabaro6795 Жыл бұрын
Автор ты просто МегаМен. 👌👍 спасибо
@Mercowod
@Mercowod 9 ай бұрын
Спасибо 👍
@djorjegolmud517
@djorjegolmud517 5 ай бұрын
Лучший просто!
@ron8897
@ron8897 5 ай бұрын
Спасибо тебе за помощь
@vadimmatskevich8439
@vadimmatskevich8439 Жыл бұрын
Благодарю за разбор красно-черного дерева Давно когда-то видел его разбор текстовый - не стал вьезжать и забил. STL на красно-черных - но кодировать их явно сложнее АВЛ и высота дерева в среднем на 25+% выше чем у АВЛ Так что друг друга они заменить и вправду не могут.
@BeketChan
@BeketChan Жыл бұрын
видео с удовольствием .... посмотрел.
@user-sf5zv4jc5v
@user-sf5zv4jc5v Жыл бұрын
Подсказка, по поводу того, чтобы понять почему КЧД балансируется, узнайте что такое 2-3 дерево, частный случай n-дерева. Когда вы поймете, 2-3 дерево, тогда вы поймет что кчд - это и есть 2-3 дерево, просто для обозначения левого и правого элемента, нам понадобилось красить узлы бинарного дерева.
@jamessmit9738
@jamessmit9738 Жыл бұрын
Спасибо конечно огромное, но контрольная по этой теме была на прошлой неделе
@bOOOOkash
@bOOOOkash Жыл бұрын
Лайк не глядя, а потом уже просматриваем в высоком качестве и без перемотки 🌚
@where631
@where631 Жыл бұрын
Real good stuff
@user-bw1fh9pd3i
@user-bw1fh9pd3i Жыл бұрын
Cпасибо, посмотрим
@MicP8
@MicP8 Жыл бұрын
Отличный разбор! В коде copyTree (8:00)на экране есть ошибка, должно быть, как и сказано в звуковом комментарии: void copyTree(Node node) { If(node==null) return; print(node.value); copyTree(node.left); copyTree(node.right); }
@yuriykachanov2212
@yuriykachanov2212 7 ай бұрын
In English: pre-order, in-order, post-order
@d1merz
@d1merz Жыл бұрын
Капитальный красавчик !
@aleksandrk.5818
@aleksandrk.5818 Жыл бұрын
Хорош комменты сыпать) лайки ставьте)
@senkamatic8448
@senkamatic8448 Жыл бұрын
Да поставили уже ))))
@avi-crakhome2524
@avi-crakhome2524 Жыл бұрын
Деревья придумали для обычных процессоров, которые способны выполнять одно сравнение за одну команду. Ускорители для ИИ работают иначе - там вся память ассоциативная, и поиск заключается в нахождении самого близкого значения от запроса, в идеале равным запросу. Но так как от двоичной логики далеко уйти не получилось - то поиск выполняется параллельным приближением, прямо в памяти. Берётся блок памяти допустим 4к цифр, и каждую цифру сравнивают с запросом, все разом, параллельно. Результатом имеем новый слой данных x>y?x-y:y-x. Если на этом слое где-то получился ноль - поиск заканчивается. Иначе выполняется операция сравнения между двумя соседями, и образуется новый слой - куда помещаются только малые числа. Потом ещё и ещё слои, до самого минимального числа. Адрес минимального числа считается результатом поиска, и он может быть не точным. И ещё пока нижний слой выполняется - верхний может принять новую страницу памяти и новый поиск. Для всего этого требуется огромное количество транзисторов - но зато скорость поиска приближается к реализациям квантовых компов. Которые кстати работают примерно так-же.
@asjvchnvh9313
@asjvchnvh9313 3 ай бұрын
Интересная инфа, что за тема? Хотел почитать статьи
@alexeyfladarov5200
@alexeyfladarov5200 Жыл бұрын
Годнота
@ruslandad365
@ruslandad365 Жыл бұрын
Кончаю от твоего "Окей" 😁😁😁
@user-gv9dg4ni5g
@user-gv9dg4ni5g 5 ай бұрын
Жёсткий контент. Примеров только бы побольше
@user-ij9vb6wn1z
@user-ij9vb6wn1z Жыл бұрын
Интересно, круто рассказываешь, но пока тяжело. Вернусь через месяц
@iliyalaz6132
@iliyalaz6132 Жыл бұрын
Очень интересно
@bOOOOkash
@bOOOOkash Жыл бұрын
Посмотрев данный ролик, я понимаю - какой же я тупой... Спасибо за ролик.
@user-pl6hu6si1u
@user-pl6hu6si1u Жыл бұрын
23:51 если я правильно понял, то это второй кейс из момента 22:08. Тогда получается ошибочка: чёрные дети красного брата не должны быть нулями. Потому, что их чёрные высоты в момент до удаления равны 1, а не нулю.
@eugenevolohonsky1469
@eugenevolohonsky1469 Жыл бұрын
Самое крутое объяснение работы деревьев
@user-eo3xn8sz7d
@user-eo3xn8sz7d 6 ай бұрын
Классный ролик, но эти нелогичные игры с интонациями просто убивают и сводят с ума. Из за них даже простая информация становится сложной. Такое ощущение что голос сгенерин плохой нейросетью.
@user-lp3ke5bg2u
@user-lp3ke5bg2u Жыл бұрын
Это класс, это здорово! Ну а компиляторы, теперь, как работают?
@atmiccmx
@atmiccmx Жыл бұрын
да ладно, чувакккк, обожаю
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
еще было б очень интересно посмотреть ролик про файловые системы. К примеру фат32. Как оно все устроено, где хранятся данные, что такое размер клстера и тд
@MsAlexandr76
@MsAlexandr76 Жыл бұрын
у него есть поищите на канале!
@OpenFrimeTVcom
@OpenFrimeTVcom Жыл бұрын
@@MsAlexandr76 вы меня дурите. нету такого
@user-pd8vg1gd5z
@user-pd8vg1gd5z Жыл бұрын
Теперь точно есть) kzbin.info/www/bejne/fILCqZiPZcp2pqM
@china6714
@china6714 Жыл бұрын
Как можно было жить и не знать этого, спасибо P.S. Серьёзно, без шуток
@call_nick
@call_nick Жыл бұрын
Пушкааааа
@glebbondarenko67
@glebbondarenko67 Жыл бұрын
Спасибо за видео. Что-то код "Прямого обхода" совпадает с кодом "Обратно подхода". Или я чего-то непонял?
@web-writer4769
@web-writer4769 Жыл бұрын
the best ever
@ceo-s
@ceo-s Жыл бұрын
Круто. Но жестко)
@alekseybiryukov7497
@alekseybiryukov7497 Жыл бұрын
Ничего не понятно, но очень интересно!
@user-ip2fg9up8u
@user-ip2fg9up8u 6 ай бұрын
Здесь представлен довольно запутанный способ поворота дерева, хотя он эффективен. Есть более простой способ, для начала лучше его освоить. выглядит это примерно так: private Node rotateLeft(Node oldParent) { Node newParent = oldParent.right; Node newParentLeft = newParent.left; newParent.left = oldParent; oldParent.right = newParentLeft; oldParent.computeHeight(); newParent.computeHeight(); return newParent; } Данный метод поворачивает поддерево и возвращает новый корень,. Чтобы его корректно использовать, нужно чтобы методы добавления и удаления возвращали Node, и предрекурсионном методе вызов должен быть таким root = add(key, root);, где root - это корень дерева.
@daniilivanik5021
@daniilivanik5021 11 ай бұрын
Персистентное AVL- дерево по неявному ключу с групповыми модификациями - кайф
@user-bw1fh9pd3i
@user-bw1fh9pd3i Жыл бұрын
Alek OS скажите пожалуйста в какой программе вы делаете слайды?
@MgsMen
@MgsMen 4 ай бұрын
Монтаж топ, но умение объяснять это искусство. Нашёл видео по этой же теме 9летней давности и сразу всё понял. А тут от ролика только перегрузка лишняя. Но лайк за труды
@gabibli
@gabibli 3 ай бұрын
Скинь ролик плз
@sweetarteko
@sweetarteko Жыл бұрын
Неалохо было бы посмотреть настолько подробное видео года два назад, когда была такая дисциплина. Было бы гораздо легче.
@geekdev0
@geekdev0 Жыл бұрын
Не глядя лайк ❤
@user-ow6dr9ok6c
@user-ow6dr9ok6c Жыл бұрын
Не слушая, тоже затычковал
@xagent
@xagent Жыл бұрын
на 8:03 у вас опечатка. Вы говорите что сначала выводим родителя потом левого и правого, но в коде у вас наоборот сначала левый и правый и потом родитель.
@vitaly_markov
@vitaly_markov Жыл бұрын
на 8:13 функции deleteTree и copyTree совершенно идентичные, хотя вроде разные обходы.......
@borshch334
@borshch334 Жыл бұрын
Ее новое видео!
@where631
@where631 Жыл бұрын
Thanks m8
@wensietland5169
@wensietland5169 Жыл бұрын
Хорошие видео, по кормену цикл идет?
@memyselfi9155
@memyselfi9155 Жыл бұрын
Братан что за музон в начале до рекламы ?
@cepmadbrozzer4448
@cepmadbrozzer4448 Жыл бұрын
Разбор структур различных файловых систем не ожидается ли в ближайшем будущем?
@user-nm8fu9fh7j
@user-nm8fu9fh7j Жыл бұрын
Интересная тема, а какое практическое применение, где это можно встретить?
@user-eb1qm7ho8h
@user-eb1qm7ho8h Жыл бұрын
Забавно что я сейчас как раз делала домашку з бинарньім деревом, и єто видео просто бьіло у меня в реках Судьба походу
@sospeedwagon9289
@sospeedwagon9289 Жыл бұрын
це відео ще й тілки но вийшло, у тебе там мабудь кайф лютий?
@user-zt8zo5sd5c
@user-zt8zo5sd5c Жыл бұрын
Я не понимаю
@sospeedwagon9289
@sospeedwagon9289 Жыл бұрын
@@user-zt8zo5sd5c пон
@user-ke7su7zc9l
@user-ke7su7zc9l Жыл бұрын
даааа, я тоже
@alanturing487
@alanturing487 5 ай бұрын
А где найти код из видео? И, кажется, на видео не попал метод Rotate, необходимый для реализации балансировки после удаления в КЧ дереве.
@KIR_Engineer
@KIR_Engineer Ай бұрын
1. 7:39, 7:56 print(node.value) разве нам не нужно вывести ключи, т.е. print(node.key) ? 2. 14:22 фукция leftRoatet строка node.right_.left_ = node.right_.right_; не лишняя? 3. После вставки в узла АВЛ в дерево его нужно балансировать? P.s. очень крутое видео, спасибо.
@Secvad
@Secvad Жыл бұрын
Классно чёрное дерево это конечно хорошо, но пока сам такую структуру не напишешь, то что-то полностью понять сложновато.
@user-ze3ez3iy6c
@user-ze3ez3iy6c 10 ай бұрын
Мне кажется, когда рассказывали про удаление из красно-чёрного дерева, брата по ошибке назвали дядей
@mikemerinoff
@mikemerinoff 11 ай бұрын
Подскажите, чем наибольший элемент дерева отличается от самого наибольшего?
@Ahmedhkad
@Ahmedhkad Жыл бұрын
Тинькофф ищет только Middle(+) . а видео про Junior(стажер) 😅
@user-ho9hy2oc9c
@user-ho9hy2oc9c Жыл бұрын
Год назад, будучи на первом курсе, сломал себе голову реализацией Fibonacci Heap, тоже тема годная и непонятная)
@markbondarchuk7043
@markbondarchuk7043 Жыл бұрын
По-моему на 7:05 рекурсивно удалять дубль 6ки нужно в левом потомке node.left = delete(node.left, maxInLeft.key) , а не в правом как на видео.
@laranMQR
@laranMQR Жыл бұрын
Мне кажется, что нужно и там, и там. Т.е. нужно просто добавить node.left = delete(node.left, maxInLeft.key), а остальное также оставить.
@vsevolodkasatchikov6730
@vsevolodkasatchikov6730 Жыл бұрын
​@@laranMQRзачем и там, и там, если мы берём 6ку именно из левого дерева, значит ее оттуда и нужно удалить. Справа может отказаться другая 6ка, которую мы удалим "просто так"
@artroden3746
@artroden3746 Жыл бұрын
6:55 то есть я могу в качестве корня взять либо 7 либо 6?
@nerusnotfound
@nerusnotfound Жыл бұрын
кайф
@user-mt6wt9vc1x
@user-mt6wt9vc1x 8 күн бұрын
В двоичном дереве поиска для метода insert забыли условие для проверки равности ключей (для того чтобы заменить значение по уже существующему ключу).
@danitkriper4114
@danitkriper4114 Жыл бұрын
Объясните пожалуйста, а как черно-красные деревья связаны со значениями в них? Та выполняется правило, что левая ветвь меньше корня, а правая больше или равна?
@An_entertaining_story
@An_entertaining_story Жыл бұрын
Комент для продвижения ролика*
@anolegych
@anolegych Жыл бұрын
Смотрю про красно-черное дерево в голове играют Rolling Stones😅
@user-pl6hu6si1u
@user-pl6hu6si1u Жыл бұрын
Paint it black, понимаю)
@sqrrrrrr
@sqrrrrrr Жыл бұрын
кайф кайф кайф
@user-uu8jv2ki3h
@user-uu8jv2ki3h 9 ай бұрын
Хм, а если я пишу последовательность [0:💯] - это у меня будет одна ветка справа от начала до конца, или я что-то неправильно понял? P.S. Только написал коммент, тут же начался блок про АВЛ 🙂
@Didar.Kussain
@Didar.Kussain Жыл бұрын
👍
@something-like-that
@something-like-that 8 ай бұрын
Что-то я совсем запутался... 7, 5, 8 в узлах - это пример ключей или значений? 4:20
@andromeda_vesna
@andromeda_vesna Жыл бұрын
Омг тут про красно-чёрное дерево... Жэээсть
@antik_tm2272
@antik_tm2272 6 ай бұрын
Как сойти с ума за 25 минут
@p8wowyt121
@p8wowyt121 Жыл бұрын
я правильно понял, в видео код писался на java?(я python'ист, +немного знаю как выглядит C)
@BRANDMAW
@BRANDMAW Жыл бұрын
Захотелось поиграть такую игру, с балансировкой на телефоне
GADGETS VS HACKS || Random Useful Tools For your child #hacks #gadgets
00:35
Glow Stick Secret (part 2) 😱 #shorts
00:33
Mr DegrEE
Рет қаралды 30 МЛН
Зу-зу Күлпәш. Көрінбейтін адам. (4-бөлім)
54:41
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
16:38
КАК УСТРОЕН ТОРРЕНТ?
18:51
Alek OS
Рет қаралды 325 М.
Поворот бинарного дерева
7:01
Volodya Mozhenkov
Рет қаралды 30 М.
Главная загадка квантовой механики
33:00
Задний двор Айлашкерского
Рет қаралды 36 М.
GADGETS VS HACKS || Random Useful Tools For your child #hacks #gadgets
00:35