КАК РАБОТАЮТ ДЕРЕВЬЯ | СТРУКТУРЫ ДАННЫХ
clck.ru/33qcFE - развивайте навыки в работе с данными на курсах от Яндекс Практикума
Создавай будущее вместе с Тинькофф - l.tinkoff.ru/alekosmarch/?Ldt...
КАК РАБОТАЮТ ДЕРЕВЬЯ | СТРУКТУРЫ ДАННЫХ
Подписывайся в соц. сетях:
Телеграм - t.me/Alek_OS
ВК - vk.com/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 Красно-чёрное дерево - удаление
Подписывайся в телеграм-канал: t.me/Alek_OS
Начался список с 1, не с 0
За это лайк)
- Что делаешь? - Перекрашиваю чёрных детей. - Расист?! - Программист.
🤣🤣🤣 Это за гранью добра и зла
- Что делаешь? - Делаю деда красным и совершаю левый поворот. - Коммунист?! - Программист.
Не расстраивайтесь если не поняли ролик. Никто никогда его не поймет с первого раза. Такие ролики лучше воспринимать не как обучающие а как справочные.
я с первого раза все понял, а ты лох ))))))))))))
По фактам
Я понял с первого раза ролик. Даже слишком простой, сеньор ios, магистк комтерных наук
@@user-yd9xy3rb4x держи в курсе
Недавно наткнулся на ваш канал. Это просто супер. На фоне всего остального шлака по теме it, который существует на ютубе, ваш канал прям выделяется. Мне очень нравится ваш фундаментальный подход. Не тупо освоить синтаксис какого нибудь языка программирования, а дать именно теоретические основы программной инженерии. Да еще и в интерактивном и наглядном формате, с анимациями, графиками. Желаю развития каналу.
Точно, канал просто супер!!!
Вот так если задуматься, какую же титаническую работу автор воплотил, написать грамотно текст, визуализировать все сказанное…лайк!
Сложно, ничего непонятно, но очень интересно
Алекс, спасибо тебе! Мне безумно заходить этот контент, я под него стараюсь расслабляться и при этом продолжать вникать во все тонкости программирования, с такой визуализацией и музыкальным сопровождением уносит в транс порой..
Недавно сам писал реализацию красно-черного дерева, столько статей пересмотрел и видосов,эх,где ты был пару недель назад( Все очень классно и понятно!
Лучший из всех каналов на рунете по IT тематике. Спасибо за контент, за качественную информацию и высокий уровень подготовки ролика 👍
Alek, благодарю!! 👍 Инфографика великолепна! 🔥
Какой же годный контент… Большое спасибо!!!
Как всегда кратко и информативно. Спасибо за пищу для мозга )
Спасибо за видео!!!
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Отличный контент! Спасибо!
Спасибо за видеоролик!
7:10 - если при удалении узла, с двумя детьми, мы используем максимальный элемент слева(maxInLeft), то и удалять надо слева : node.left = delete(node.left, maxInLeft.key). На слайдах : node.right = delete(node.right, maxInLeft.key). Аналогичная неточность в коде для AVL Tree
Верно. Хорошее замечание
а я сижу не понимаю что не так
Очень качественный контент, спасибо
круто, так быстро и подробно про деревья я еще не видел материала
Спасибо за видео. Лайк👍
как вовремя! как раз разбирался с ними! спасибо!
Спасибо за очередное годное видео
Спасибо за видео Очень круто и фундаментально
огромное спасибо за видео
Прекрасно!!!
Не стоило ли указать, что видео исключительно про бинарные деревья? А то складывается ощущение, что других и не существует. Я, к примеру, всё ждал, каким будет разбор B+Tree, чтобы в очередной итерации попробовать снова обуздать принцип работы InnoDB. Но видео очень залипательное, спасибо! Очень низкоуровнево, прям как я люблю.
согласен, эту структуру данных как-то обходят стороной, иногда даже BTree расшифровывают как Binary Tree(
Очень низкоуровнево, прям как я не люблю :) Но было интересно
Сними ролик про B-trees плз) Нормального ролика найти не могу, а они чаще используются для баз данных....
Автор ты просто МегаМен. 👌👍 спасибо
видео с удовольствием .... посмотрел.
О. Новенький видосик. Усваиваем
Лучший просто!
Алекс, привет. Мне кажется, что на 7:05 также нужно и слева искать значение ключа заменяющего узла, чтобы его удалить. Т.е. просто нужно добавить node.left = delete(node.left, maxInLeft.key); . Переписал твой код и попробовал на датасете от 5 до 11 удалить вершину 8, то с кодом из примера 7 станет вершиной и также останется лепестком, поэтому нужно и для левой части делать проверку (удаление).
Спасибо тебе за помощь
Кончаю от твоего "Окей" 😁😁😁
Отличный разбор! В коде copyTree (8:00)на экране есть ошибка, должно быть, как и сказано в звуковом комментарии: void copyTree(Node node) { If(node==null) return; print(node.value); copyTree(node.left); copyTree(node.right); }
In English: pre-order, in-order, post-order
Cпасибо, посмотрим
Мозг расплавится понять это с первого раза. Автору респект, что не только вник и разобрался, но и иллюстрировал и разжевал. Но осознать это всё очень сложно. Только базовые идеи
Спасибо конечно огромное, но контрольная по этой теме была на прошлой неделе
Благодарю за разбор красно-черного дерева Давно когда-то видел его разбор текстовый - не стал вьезжать и забил. STL на красно-черных - но кодировать их явно сложнее АВЛ и высота дерева в среднем на 25+% выше чем у АВЛ Так что друг друга они заменить и вправду не могут.
Лайк не глядя, а потом уже просматриваем в высоком качестве и без перемотки 🌚
Это класс, это здорово! Ну а компиляторы, теперь, как работают?
Капитальный красавчик !
Интересно, круто рассказываешь, но пока тяжело. Вернусь через месяц
Спасибо 👍
Жёсткий контент. Примеров только бы побольше
23:51 если я правильно понял, то это второй кейс из момента 22:08. Тогда получается ошибочка: чёрные дети красного брата не должны быть нулями. Потому, что их чёрные высоты в момент до удаления равны 1, а не нулю.
Подсказка, по поводу того, чтобы понять почему КЧД балансируется, узнайте что такое 2-3 дерево, частный случай n-дерева. Когда вы поймете, 2-3 дерево, тогда вы поймет что кчд - это и есть 2-3 дерево, просто для обозначения левого и правого элемента, нам понадобилось красить узлы бинарного дерева.
Деревья придумали для обычных процессоров, которые способны выполнять одно сравнение за одну команду. Ускорители для ИИ работают иначе - там вся память ассоциативная, и поиск заключается в нахождении самого близкого значения от запроса, в идеале равным запросу. Но так как от двоичной логики далеко уйти не получилось - то поиск выполняется параллельным приближением, прямо в памяти. Берётся блок памяти допустим 4к цифр, и каждую цифру сравнивают с запросом, все разом, параллельно. Результатом имеем новый слой данных x>y?x-y:y-x. Если на этом слое где-то получился ноль - поиск заканчивается. Иначе выполняется операция сравнения между двумя соседями, и образуется новый слой - куда помещаются только малые числа. Потом ещё и ещё слои, до самого минимального числа. Адрес минимального числа считается результатом поиска, и он может быть не точным. И ещё пока нижний слой выполняется - верхний может принять новую страницу памяти и новый поиск. Для всего этого требуется огромное количество транзисторов - но зато скорость поиска приближается к реализациям квантовых компов. Которые кстати работают примерно так-же.
Интересная инфа, что за тема? Хотел почитать статьи
Очень интересно
Real good stuff
Посмотрев данный ролик, я понимаю - какой же я тупой... Спасибо за ролик.
да ладно, чувакккк, обожаю
Alek OS скажите пожалуйста в какой программе вы делаете слайды?
Годнота
на 8:03 у вас опечатка. Вы говорите что сначала выводим родителя потом левого и правого, но в коде у вас наоборот сначала левый и правый и потом родитель.
Спасибо за видео. Что-то код "Прямого обхода" совпадает с кодом "Обратно подхода". Или я чего-то непонял?
Хорош комменты сыпать) лайки ставьте)
Да поставили уже ))))
Классный ролик, но эти нелогичные игры с интонациями просто убивают и сводят с ума. Из за них даже простая информация становится сложной. Такое ощущение что голос сгенерин плохой нейросетью.
Здесь представлен довольно запутанный способ поворота дерева, хотя он эффективен. Есть более простой способ, для начала лучше его освоить. выглядит это примерно так: 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 - это корень дерева.
на 8:13 функции deleteTree и copyTree совершенно идентичные, хотя вроде разные обходы.......
Самое крутое объяснение работы деревьев
Неалохо было бы посмотреть настолько подробное видео года два назад, когда была такая дисциплина. Было бы гораздо легче.
1. 7:39, 7:56 print(node.value) разве нам не нужно вывести ключи, т.е. print(node.key) ? 2. 14:22 фукция leftRoatet строка node.right_.left_ = node.right_.right_; не лишняя? 3. После вставки в узла АВЛ в дерево его нужно балансировать? P.s. очень крутое видео, спасибо.
еще было б очень интересно посмотреть ролик про файловые системы. К примеру фат32. Как оно все устроено, где хранятся данные, что такое размер клстера и тд
у него есть поищите на канале!
@@MsAlexandr76 вы меня дурите. нету такого
Теперь точно есть) kzhead.info/sun/ebWYqMmRZ5d5o3k/bejne.html
Персистентное AVL- дерево по неявному ключу с групповыми модификациями - кайф
Как можно было жить и не знать этого, спасибо P.S. Серьёзно, без шуток
Монтаж топ, но умение объяснять это искусство. Нашёл видео по этой же теме 9летней давности и сразу всё понял. А тут от ролика только перегрузка лишняя. Но лайк за труды
Скинь ролик плз
Пушкааааа
Ничего не понятно, но очень интересно!
Разбор структур различных файловых систем не ожидается ли в ближайшем будущем?
Забавно что я сейчас как раз делала домашку з бинарньім деревом, и єто видео просто бьіло у меня в реках Судьба походу
це відео ще й тілки но вийшло, у тебе там мабудь кайф лютий?
Я не понимаю
@@user-zt8zo5sd5c пон
даааа, я тоже
Круто. Но жестко)
Интересная тема, а какое практическое применение, где это можно встретить?
Хорошие видео, по кормену цикл идет?
А где найти код из видео? И, кажется, на видео не попал метод Rotate, необходимый для реализации балансировки после удаления в КЧ дереве.
Подскажите, чем наибольший элемент дерева отличается от самого наибольшего?
Тинькофф ищет только Middle(+) . а видео про Junior(стажер) 😅
Ее новое видео!
По-моему на 7:05 рекурсивно удалять дубль 6ки нужно в левом потомке node.left = delete(node.left, maxInLeft.key) , а не в правом как на видео.
Мне кажется, что нужно и там, и там. Т.е. нужно просто добавить node.left = delete(node.left, maxInLeft.key), а остальное также оставить.
@@laranMQRзачем и там, и там, если мы берём 6ку именно из левого дерева, значит ее оттуда и нужно удалить. Справа может отказаться другая 6ка, которую мы удалим "просто так"
Объясните пожалуйста, а как черно-красные деревья связаны со значениями в них? Та выполняется правило, что левая ветвь меньше корня, а правая больше или равна?
Не глядя лайк ❤
Не слушая, тоже затычковал
В двоичном дереве поиска для метода insert забыли условие для проверки равности ключей (для того чтобы заменить значение по уже существующему ключу).
the best ever
Мне кажется, когда рассказывали про удаление из красно-чёрного дерева, брата по ошибке назвали дядей
Братан что за музон в начале до рекламы ?
Смотрю про красно-черное дерево в голове играют Rolling Stones😅
Paint it black, понимаю)
6:55 то есть я могу в качестве корня взять либо 7 либо 6?
Хм, а если я пишу последовательность [0:💯] - это у меня будет одна ветка справа от начала до конца, или я что-то неправильно понял? P.S. Только написал коммент, тут же начался блок про АВЛ 🙂
Омг тут про красно-чёрное дерево... Жэээсть
Классно чёрное дерево это конечно хорошо, но пока сам такую структуру не напишешь, то что-то полностью понять сложновато.
Thanks m8
Комент для продвижения ролика*
Год назад, будучи на первом курсе, сломал себе голову реализацией Fibonacci Heap, тоже тема годная и непонятная)
Объясните, пожалуйста, почему на 17:33 в правой ветке дерева узел черный, а не красный, если у него двое детей и оба черные листы? По объяснению, он должен быть красный и тогда все красно-черное древо несбалансированно... или нет?
Черный узел может иметь два черных ребенка, а вот красный узел не просто может, а обязан. В этом вся логика
Что-то я совсем запутался... 7, 5, 8 в узлах - это пример ключей или значений? 4:20
Как сойти с ума за 25 минут
кайф
я правильно понял, в видео код писался на java?(я python'ист, +немного знаю как выглядит C)
👍
Ох, что-то мне не хорошо 😁