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

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 Красно-чёрное дерево - удаление

Пікірлер: 196

  • @AlekOS
    @AlekOS Жыл бұрын

    Подписывайся в телеграм-канал: t.me/Alek_OS

  • @dmbabaycev123

    @dmbabaycev123

    Жыл бұрын

    Начался список с 1, не с 0

  • @dmbabaycev123

    @dmbabaycev123

    Жыл бұрын

    За это лайк)

  • @Cheeckoff
    @Cheeckoff Жыл бұрын

    - Что делаешь? - Перекрашиваю чёрных детей. - Расист?! - Программист.

  • @bartbelrigvardo5216

    @bartbelrigvardo5216

    Жыл бұрын

    🤣🤣🤣 Это за гранью добра и зла

  • @abuser-je3gl4vc1c

    @abuser-je3gl4vc1c

    5 ай бұрын

    - Что делаешь? - Делаю деда красным и совершаю левый поворот. - Коммунист?! - Программист.

  • @user-im8fx4kp1p

    @user-im8fx4kp1p

    20 сағат бұрын

    @@abuser-je3gl4vc1c open source программист

  • @user-jx8pe4yz6q
    @user-jx8pe4yz6q Жыл бұрын

    Не расстраивайтесь если не поняли ролик. Никто никогда его не поймет с первого раза. Такие ролики лучше воспринимать не как обучающие а как справочные.

  • @user-eb9cv3wx8b

    @user-eb9cv3wx8b

    8 ай бұрын

    я с первого раза все понял, а ты лох ))))))))))))

  • @user-ud1fw5zc8i

    @user-ud1fw5zc8i

    5 ай бұрын

    По фактам

  • @user-yd9xy3rb4x

    @user-yd9xy3rb4x

    Ай бұрын

    Я понял с первого раза ролик. Даже слишком простой, сеньор ios, магистк комтерных наук

  • @user-yj2cq4fm7z

    @user-yj2cq4fm7z

    20 күн бұрын

    @@user-yd9xy3rb4x держи в курсе

  • @xagent
    @xagent Жыл бұрын

    Недавно наткнулся на ваш канал. Это просто супер. На фоне всего остального шлака по теме it, который существует на ютубе, ваш канал прям выделяется. Мне очень нравится ваш фундаментальный подход. Не тупо освоить синтаксис какого нибудь языка программирования, а дать именно теоретические основы программной инженерии. Да еще и в интерактивном и наглядном формате, с анимациями, графиками. Желаю развития каналу.

  • @DemetriuszStrykowski

    @DemetriuszStrykowski

    Жыл бұрын

    Точно, канал просто супер!!!

  • @user-ot5iy5es4l
    @user-ot5iy5es4l Жыл бұрын

    Вот так если задуматься, какую же титаническую работу автор воплотил, написать грамотно текст, визуализировать все сказанное…лайк!

  • @viska_tru
    @viska_tru Жыл бұрын

    Сложно, ничего непонятно, но очень интересно

  • @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 ай бұрын

    Верно. Хорошее замечание

  • @Andreypochemu

    @Andreypochemu

    12 күн бұрын

    а я сижу не понимаю что не так

  • @user-ov1xr1ip7i
    @user-ov1xr1ip7i Жыл бұрын

    Недавно сам писал реализацию красно-черного дерева, столько статей пересмотрел и видосов,эх,где ты был пару недель назад( Все очень классно и понятно!

  • @cepmadbrozzer4448
    @cepmadbrozzer4448 Жыл бұрын

    Не стоило ли указать, что видео исключительно про бинарные деревья? А то складывается ощущение, что других и не существует. Я, к примеру, всё ждал, каким будет разбор B+Tree, чтобы в очередной итерации попробовать снова обуздать принцип работы InnoDB. Но видео очень залипательное, спасибо! Очень низкоуровнево, прям как я люблю.

  • @alexshturmovik3037

    @alexshturmovik3037

    Жыл бұрын

    согласен, эту структуру данных как-то обходят стороной, иногда даже BTree расшифровывают как Binary Tree(

  • @DenysHolovin

    @DenysHolovin

    10 ай бұрын

    Очень низкоуровнево, прям как я не люблю :) Но было интересно

  • @BigRock379
    @BigRock3798 ай бұрын

    Алекс, спасибо тебе! Мне безумно заходить этот контент, я под него стараюсь расслабляться и при этом продолжать вникать во все тонкости программирования, с такой визуализацией и музыкальным сопровождением уносит в транс порой..

  • @p.al.trofimov
    @p.al.trofimov Жыл бұрын

    Лучший из всех каналов на рунете по IT тематике. Спасибо за контент, за качественную информацию и высокий уровень подготовки ролика 👍

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov7 ай бұрын

    Alek, благодарю!! 👍 Инфографика великолепна! 🔥

  • @alekseykhromov259
    @alekseykhromov259 Жыл бұрын

    Какой же годный контент… Большое спасибо!!!

  • @zadrot64
    @zadrot64 Жыл бұрын

    Сними ролик про B-trees плз) Нормального ролика найти не могу, а они чаще используются для баз данных....

  • @sashakuznechkin
    @sashakuznechkin Жыл бұрын

    Спасибо за видео!!!

  • @pashkiewich
    @pashkiewich Жыл бұрын

    Как всегда кратко и информативно. Спасибо за пищу для мозга )

  • @arswarog
    @arswarog Жыл бұрын

    круто, так быстро и подробно про деревья я еще не видел материала

  • @ruslandad365
    @ruslandad365 Жыл бұрын

    Кончаю от твоего "Окей" 😁😁😁

  • @whitefox1777
    @whitefox1777 Жыл бұрын

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @rechw769
    @rechw769 Жыл бұрын

    как вовремя! как раз разбирался с ними! спасибо!

  • @matweyrybakovskiy2952
    @matweyrybakovskiy2952 Жыл бұрын

    Отличный контент! Спасибо!

  • @MicP8
    @MicP8 Жыл бұрын

    Отличный разбор! В коде copyTree (8:00)на экране есть ошибка, должно быть, как и сказано в звуковом комментарии: void copyTree(Node node) { If(node==null) return; print(node.value); copyTree(node.left); copyTree(node.right); }

  • @yuriykachanov2212

    @yuriykachanov2212

    8 ай бұрын

    In English: pre-order, in-order, post-order

  • @andarworld8985
    @andarworld8985 Жыл бұрын

    Спасибо за видеоролик!

  • @user-fy3iv9dp7g
    @user-fy3iv9dp7g Жыл бұрын

    Спасибо за видео. Лайк👍

  • @user-jg7ly1ib2z
    @user-jg7ly1ib2z Жыл бұрын

    Очень качественный контент, спасибо

  • @user-ll7mx9mn8z
    @user-ll7mx9mn8z Жыл бұрын

    Спасибо за очередное годное видео

  • @leomysky
    @leomysky11 ай бұрын

    Спасибо за видео Очень круто и фундаментально

  • @nikolaiandrianov1856
    @nikolaiandrianov1856 Жыл бұрын

    Прекрасно!!!

  • @aidamur
    @aidamur Жыл бұрын

    огромное спасибо за видео

  • @bOOOOkash
    @bOOOOkash Жыл бұрын

    Посмотрев данный ролик, я понимаю - какой же я тупой... Спасибо за ролик.

  • @ghjklfghk
    @ghjklfghk Жыл бұрын

    О. Новенький видосик. Усваиваем

  • @avi-crakhome2524
    @avi-crakhome2524 Жыл бұрын

    Деревья придумали для обычных процессоров, которые способны выполнять одно сравнение за одну команду. Ускорители для ИИ работают иначе - там вся память ассоциативная, и поиск заключается в нахождении самого близкого значения от запроса, в идеале равным запросу. Но так как от двоичной логики далеко уйти не получилось - то поиск выполняется параллельным приближением, прямо в памяти. Берётся блок памяти допустим 4к цифр, и каждую цифру сравнивают с запросом, все разом, параллельно. Результатом имеем новый слой данных x>y?x-y:y-x. Если на этом слое где-то получился ноль - поиск заканчивается. Иначе выполняется операция сравнения между двумя соседями, и образуется новый слой - куда помещаются только малые числа. Потом ещё и ещё слои, до самого минимального числа. Адрес минимального числа считается результатом поиска, и он может быть не точным. И ещё пока нижний слой выполняется - верхний может принять новую страницу памяти и новый поиск. Для всего этого требуется огромное количество транзисторов - но зато скорость поиска приближается к реализациям квантовых компов. Которые кстати работают примерно так-же.

  • @asjvchnvh9313

    @asjvchnvh9313

    3 ай бұрын

    Интересная инфа, что за тема? Хотел почитать статьи

  • @BeketChan
    @BeketChan Жыл бұрын

    видео с удовольствием .... посмотрел.

  • @vladimirzabaro6795
    @vladimirzabaro6795 Жыл бұрын

    Автор ты просто МегаМен. 👌👍 спасибо

  • @djorjegolmud517
    @djorjegolmud5175 ай бұрын

    Лучший просто!

  • @ron8897
    @ron88975 ай бұрын

    Спасибо тебе за помощь

  • @aleksandrk.5818
    @aleksandrk.5818 Жыл бұрын

    Хорош комменты сыпать) лайки ставьте)

  • @senkamatic8448

    @senkamatic8448

    Жыл бұрын

    Да поставили уже ))))

  • @bOOOOkash
    @bOOOOkash Жыл бұрын

    Лайк не глядя, а потом уже просматриваем в высоком качестве и без перемотки 🌚

  • @user-bw1fh9pd3i
    @user-bw1fh9pd3i Жыл бұрын

    Cпасибо, посмотрим

  • @vadimmatskevich8439
    @vadimmatskevich8439 Жыл бұрын

    Благодарю за разбор красно-черного дерева Давно когда-то видел его разбор текстовый - не стал вьезжать и забил. STL на красно-черных - но кодировать их явно сложнее АВЛ и высота дерева в среднем на 25+% выше чем у АВЛ Так что друг друга они заменить и вправду не могут.

  • @prokaza97
    @prokaza977 ай бұрын

    Мозг расплавится понять это с первого раза. Автору респект, что не только вник и разобрался, но и иллюстрировал и разжевал. Но осознать это всё очень сложно. Только базовые идеи

  • @laranMQR
    @laranMQR Жыл бұрын

    Алекс, привет. Мне кажется, что на 7:05 также нужно и слева искать значение ключа заменяющего узла, чтобы его удалить. Т.е. просто нужно добавить node.left = delete(node.left, maxInLeft.key); . Переписал твой код и попробовал на датасете от 5 до 11 удалить вершину 8, то с кодом из примера 7 станет вершиной и также останется лепестком, поэтому нужно и для левой части делать проверку (удаление).

  • @user-sf5zv4jc5v
    @user-sf5zv4jc5v Жыл бұрын

    Подсказка, по поводу того, чтобы понять почему КЧД балансируется, узнайте что такое 2-3 дерево, частный случай n-дерева. Когда вы поймете, 2-3 дерево, тогда вы поймет что кчд - это и есть 2-3 дерево, просто для обозначения левого и правого элемента, нам понадобилось красить узлы бинарного дерева.

  • @jamessmit9738
    @jamessmit9738 Жыл бұрын

    Спасибо конечно огромное, но контрольная по этой теме была на прошлой неделе

  • @d1merz
    @d1merz Жыл бұрын

    Капитальный красавчик !

  • @Mercowod
    @Mercowod10 ай бұрын

    Спасибо 👍

  • @iliyalaz6132
    @iliyalaz6132 Жыл бұрын

    Очень интересно

  • @vitaly_markov
    @vitaly_markov Жыл бұрын

    на 8:13 функции deleteTree и copyTree совершенно идентичные, хотя вроде разные обходы.......

  • @MgsMen
    @MgsMen5 ай бұрын

    Монтаж топ, но умение объяснять это искусство. Нашёл видео по этой же теме 9летней давности и сразу всё понял. А тут от ролика только перегрузка лишняя. Но лайк за труды

  • @gabibli

    @gabibli

    4 ай бұрын

    Скинь ролик плз

  • @user-eo3xn8sz7d
    @user-eo3xn8sz7d6 ай бұрын

    Классный ролик, но эти нелогичные игры с интонациями просто убивают и сводят с ума. Из за них даже простая информация становится сложной. Такое ощущение что голос сгенерин плохой нейросетью.

  • @user-ij9vb6wn1z
    @user-ij9vb6wn1z Жыл бұрын

    Интересно, круто рассказываешь, но пока тяжело. Вернусь через месяц

  • @xagent
    @xagent Жыл бұрын

    на 8:03 у вас опечатка. Вы говорите что сначала выводим родителя потом левого и правого, но в коде у вас наоборот сначала левый и правый и потом родитель.

  • @user-gv9dg4ni5g
    @user-gv9dg4ni5g5 ай бұрын

    Жёсткий контент. Примеров только бы побольше

  • @where631
    @where631 Жыл бұрын

    Real good stuff

  • @user-eb1qm7ho8h
    @user-eb1qm7ho8h Жыл бұрын

    Забавно что я сейчас как раз делала домашку з бинарньім деревом, и єто видео просто бьіло у меня в реках Судьба походу

  • @sospeedwagon9289

    @sospeedwagon9289

    Жыл бұрын

    це відео ще й тілки но вийшло, у тебе там мабудь кайф лютий?

  • @user-zt8zo5sd5c

    @user-zt8zo5sd5c

    Жыл бұрын

    Я не понимаю

  • @sospeedwagon9289

    @sospeedwagon9289

    Жыл бұрын

    @@user-zt8zo5sd5c пон

  • @user-ke7su7zc9l

    @user-ke7su7zc9l

    Жыл бұрын

    даааа, я тоже

  • @user-pl6hu6si1u
    @user-pl6hu6si1u Жыл бұрын

    23:51 если я правильно понял, то это второй кейс из момента 22:08. Тогда получается ошибочка: чёрные дети красного брата не должны быть нулями. Потому, что их чёрные высоты в момент до удаления равны 1, а не нулю.

  • @atmiccmx
    @atmiccmx Жыл бұрын

    да ладно, чувакккк, обожаю

  • @user-ip2fg9up8u
    @user-ip2fg9up8u6 ай бұрын

    Здесь представлен довольно запутанный способ поворота дерева, хотя он эффективен. Есть более простой способ, для начала лучше его освоить. выглядит это примерно так: 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 - это корень дерева.

  • @eugenevolohonsky1469
    @eugenevolohonsky1469 Жыл бұрын

    Самое крутое объяснение работы деревьев

  • @user-lp3ke5bg2u
    @user-lp3ke5bg2u Жыл бұрын

    Это класс, это здорово! Ну а компиляторы, теперь, как работают?

  • @alexeyfladarov5200
    @alexeyfladarov5200 Жыл бұрын

    Годнота

  • @Ahmedhkad
    @Ahmedhkad Жыл бұрын

    Тинькофф ищет только Middle(+) . а видео про Junior(стажер) 😅

  • @sweetarteko
    @sweetarteko Жыл бұрын

    Неалохо было бы посмотреть настолько подробное видео года два назад, когда была такая дисциплина. Было бы гораздо легче.

  • @alekseybiryukov7497
    @alekseybiryukov7497 Жыл бұрын

    Ничего не понятно, но очень интересно!

  • @daniilivanik5021
    @daniilivanik5021 Жыл бұрын

    Персистентное AVL- дерево по неявному ключу с групповыми модификациями - кайф

  • @OpenFrimeTVcom
    @OpenFrimeTVcom Жыл бұрын

    еще было б очень интересно посмотреть ролик про файловые системы. К примеру фат32. Как оно все устроено, где хранятся данные, что такое размер клстера и тд

  • @MsAlexandr76

    @MsAlexandr76

    Жыл бұрын

    у него есть поищите на канале!

  • @OpenFrimeTVcom

    @OpenFrimeTVcom

    Жыл бұрын

    @@MsAlexandr76 вы меня дурите. нету такого

  • @user-pd8vg1gd5z

    @user-pd8vg1gd5z

    Жыл бұрын

    Теперь точно есть) kzread.info/dash/bejne/eIWT2seSYMipoKQ.html

  • @china6714
    @china6714 Жыл бұрын

    Как можно было жить и не знать этого, спасибо P.S. Серьёзно, без шуток

  • @user-bw1fh9pd3i
    @user-bw1fh9pd3i Жыл бұрын

    Alek OS скажите пожалуйста в какой программе вы делаете слайды?

  • @call_nick
    @call_nick Жыл бұрын

    Пушкааааа

  • @ceo-s
    @ceo-s Жыл бұрын

    Круто. Но жестко)

  • @glebbondarenko67
    @glebbondarenko67 Жыл бұрын

    Спасибо за видео. Что-то код "Прямого обхода" совпадает с кодом "Обратно подхода". Или я чего-то непонял?

  • @user-nm8fu9fh7j
    @user-nm8fu9fh7j Жыл бұрын

    Интересная тема, а какое практическое применение, где это можно встретить?

  • @anolegych
    @anolegych Жыл бұрын

    Смотрю про красно-черное дерево в голове играют Rolling Stones😅

  • @user-pl6hu6si1u

    @user-pl6hu6si1u

    Жыл бұрын

    Paint it black, понимаю)

  • @borshch334
    @borshch334 Жыл бұрын

    Ее новое видео!

  • @user-mt6wt9vc1x
    @user-mt6wt9vc1x22 күн бұрын

    В двоичном дереве поиска для метода insert забыли условие для проверки равности ключей (для того чтобы заменить значение по уже существующему ключу).

  • @web-writer4769
    @web-writer4769 Жыл бұрын

    the best ever

  • @wensietland5169
    @wensietland5169 Жыл бұрын

    Хорошие видео, по кормену цикл идет?

  • @KIR_Engineer
    @KIR_Engineer2 ай бұрын

    1. 7:39, 7:56 print(node.value) разве нам не нужно вывести ключи, т.е. print(node.key) ? 2. 14:22 фукция leftRoatet строка node.right_.left_ = node.right_.right_; не лишняя? 3. После вставки в узла АВЛ в дерево его нужно балансировать? P.s. очень крутое видео, спасибо.

  • @cepmadbrozzer4448
    @cepmadbrozzer4448 Жыл бұрын

    Разбор структур различных файловых систем не ожидается ли в ближайшем будущем?

  • @mikemerinoff
    @mikemerinoff11 ай бұрын

    Подскажите, чем наибольший элемент дерева отличается от самого наибольшего?

  • @user-ze3ez3iy6c
    @user-ze3ez3iy6c11 ай бұрын

    Мне кажется, когда рассказывали про удаление из красно-чёрного дерева, брата по ошибке назвали дядей

  • @andromeda_vesna
    @andromeda_vesna Жыл бұрын

    Омг тут про красно-чёрное дерево... Жэээсть

  • @antik_tm2272
    @antik_tm22727 ай бұрын

    Как сойти с ума за 25 минут

  • @alanturing487
    @alanturing4876 ай бұрын

    А где найти код из видео? И, кажется, на видео не попал метод Rotate, необходимый для реализации балансировки после удаления в КЧ дереве.

  • @memyselfi9155
    @memyselfi9155 Жыл бұрын

    Братан что за музон в начале до рекламы ?

  • @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ка, которую мы удалим "просто так"

  • @ron8897
    @ron88975 ай бұрын

    На протяжение всего времени изучения программирования, я уже наверное 10000 раз сказал что я тупой )

  • @where631
    @where631 Жыл бұрын

    Thanks m8

  • @An_entertaining_story
    @An_entertaining_story Жыл бұрын

    Комент для продвижения ролика*

  • @geekdev0
    @geekdev0 Жыл бұрын

    Не глядя лайк ❤

  • @user-ow6dr9ok6c

    @user-ow6dr9ok6c

    Жыл бұрын

    Не слушая, тоже затычковал

  • @Secvad
    @Secvad Жыл бұрын

    Классно чёрное дерево это конечно хорошо, но пока сам такую структуру не напишешь, то что-то полностью понять сложновато.

  • @danitkriper4114
    @danitkriper4114 Жыл бұрын

    Объясните пожалуйста, а как черно-красные деревья связаны со значениями в них? Та выполняется правило, что левая ветвь меньше корня, а правая больше или равна?

  • @artroden3746
    @artroden3746 Жыл бұрын

    6:55 то есть я могу в качестве корня взять либо 7 либо 6?

  • @namename7527
    @namename7527 Жыл бұрын

    Комм для продвижения ролика*

  • @user-ho9hy2oc9c
    @user-ho9hy2oc9c Жыл бұрын

    Год назад, будучи на первом курсе, сломал себе голову реализацией Fibonacci Heap, тоже тема годная и непонятная)

  • @Tim-Slim
    @Tim-Slim Жыл бұрын

    Ох, что-то мне не хорошо 😁

  • @user-ux6kd2qc5y
    @user-ux6kd2qc5y Жыл бұрын

    Жуть, тут пузырьком то не написать, а тут такое разобрано. 😢

  • @iGexogen
    @iGexogen Жыл бұрын

    Черные родители, черный дядя, черные дети - как будто в гетто зашел)

  • @nerusnotfound
    @nerusnotfound Жыл бұрын

    кайф

  • @BRANDMAW
    @BRANDMAW Жыл бұрын

    Захотелось поиграть такую игру, с балансировкой на телефоне