Бинарное дерево. Полное понимание! Динамические структуры данных #3

  Рет қаралды 234,975

#SimpleCode

#SimpleCode

Күн бұрын

Пікірлер: 175
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
@zaramar8250
@zaramar8250 6 жыл бұрын
Ждем программной реализации)
@musaxudiyev7754
@musaxudiyev7754 5 жыл бұрын
Спасибо большое за такие уроки!
@ДмитрийСолярис-п9ц
@ДмитрийСолярис-п9ц 2 жыл бұрын
Какие минусы бинарного дерева?
@IT-es9yl
@IT-es9yl Жыл бұрын
Читал несколько методических пособий, но смысл и преимущества бинарного дерева дошли до меня только после просмотра данного видеоурока. Спасибо!
@IIIA_KO
@IIIA_KO 3 жыл бұрын
Единственный канал где понятно объясняется программирование
@Гриша1-д5о
@Гриша1-д5о 6 жыл бұрын
вот бы сделать отдельный стрим по дереву с подробным объяснением , было бы очень полезно начинающим, и еще я бы хотел разобраться как балансировку делать)))Спасибо большое за труды, Сергей))
@martinsnarogs7530
@martinsnarogs7530 4 жыл бұрын
Кому интересно, вот реализация бинарного дерева #include #include using namespace std; struct Tree { Tree *left; Tree *right; int num; Tree(int n = 0, Tree* l = nullptr, Tree* r = nullptr) :num(n), left(l), right(r) {} // Конструктор принимает данные, и указатель на левый и правый элемент, по умолчанию инициализируя их нулями. Далее конструктор передает эти значения дальше через двоеточие }; class BTree { Tree *root; public: BTree() { root = nullptr; } ~BTree() { Tree *temp = root; int rootValue = root->num; Tree *previous = root; while (temp != nullptr && rootValue == temp->num ) { if (root->left==nullptr && root->right==nullptr) { if (previous->left != nullptr && previous->left->num == root->num) { previous->left = nullptr; } else if (previous->right !=nullptr && previous->right->num == root->num) { previous->right = nullptr; } delete root; root = temp; } else if (root->left != nullptr && root->left->num < root->num) { previous = root; root = root->left; } else { previous = root; root = root->right; }}} void add(Tree *&t, int n) { if (t == nullptr) { t = new Tree(n); } else { if (n < t->num) { //cout left, n); } else { add(t->right, n); //cout left); cout num right); } //else cout
@mikekras7646
@mikekras7646 3 жыл бұрын
Скажи что делает функция inorder?
@Куся-ч9я
@Куся-ч9я 3 жыл бұрын
Подтолкнул на правильную мысль. Реализовал чуть иначе, но принцип тот же. Спасибо
@phello57
@phello57 2 жыл бұрын
Огромное спасибо от моей нервной системы за наглядную визуализацию проговариваемых слов в фотошопе. Все три видео на одном дыхании
@БогданаДана-у4р
@БогданаДана-у4р 4 жыл бұрын
Большое спасибо за Ваш труд! Вы делаете нас умнее)
@IrinaBod
@IrinaBod 4 ай бұрын
Спасибо большое!!! Сейчас я на курсах в школе программирования и как раз тема бинарных деревьев! Ваше видео поможет!
@Kobzarko
@Kobzarko 6 жыл бұрын
Большое спасибо за ваш труд! Очень нужно реализация бинарного дерева в вашем исполнении!
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
#бинарноедерево #динамическиеструктурыданных #SimpleCode #урокипрограммирования
@antonpashkevich5061
@antonpashkevich5061 4 жыл бұрын
Красавчик :3 Как легко и понятно объясняешь
@NikolayForostiy
@NikolayForostiy 5 жыл бұрын
До этого я и не знал зачем нужны бинарные деревья спасибо, что пояснил!
@MatamuneDT
@MatamuneDT 2 жыл бұрын
Большое спасибо. Очень наглядно просто и понятно объяснили!
@pashudzu
@pashudzu 8 ай бұрын
Очень понятное объяснение, спасибо, респект автору🎉
@dimasavukov6230
@dimasavukov6230 6 жыл бұрын
Сергей !!! спасибо за видео !!! У Вас талант -- объяснять не необъяснимые вещи !!!!!
@gevorgpirenyan3530
@gevorgpirenyan3530 4 ай бұрын
Очень хорошо объяснено. Спасибо большое!
@gadjik_youtube
@gadjik_youtube 2 жыл бұрын
спасибо , стало понятно ! смотрел обход дерева на другом канале , там не уточняли , что бинарное дерево заполняется по правилам, было не понятно для чего оно вообще нужно !
@andrews_lerk
@andrews_lerk 4 жыл бұрын
Просто максимально полезный поток информации)) Спасибо!! Однозначно лайк, подписка!)
@WEBSTART-LIVE
@WEBSTART-LIVE 3 жыл бұрын
Коротко и ёмко! Пока пил кофе, разобрался в том, что другие по часу жуют в своих видео и не могут донести
@Ermine882
@Ermine882 6 жыл бұрын
Спасибо за урок.
@НикитаЛевченко-с3ч
@НикитаЛевченко-с3ч 3 жыл бұрын
Прекрасное изложение материала. Спасибо!
@HerrHoldem
@HerrHoldem 6 жыл бұрын
Очень крутые и полезные видео, спасибо!
@vladalu9794
@vladalu9794 6 жыл бұрын
Большое спасибо за урок, вот бы еще реализацию увидеть)))
@ilikecola378
@ilikecola378 2 жыл бұрын
В фотошопе 😀
@C2H5OHH
@C2H5OHH 3 жыл бұрын
Спасибо за урок!
@KMkmkmkmkm-z7y
@KMkmkmkmkm-z7y Жыл бұрын
Еще б немного математики сюда) Расчет сложности поиска элемента например… Где-нибудь в конце, чтоб не пугать большинство)
@nomilious8093
@nomilious8093 3 жыл бұрын
Спасибо за вашу работу!!)
@ДжонСноу-е1б
@ДжонСноу-е1б 3 жыл бұрын
Эх, помню писал бинарный поиск. Хорошая практика! public int BinarySearch(int[] arr, int _item) { int _low = 0; //первый элемент массива для пойска int _high = arr.Length - 1; //последний элемент массива для пойска while (_low _item) // если много { _high = _mid - 1; // идем к найменьшему элементу } else // если мало { _low = _mid + 1; // идем к найбольшему элементу } } return 0; // если элемент не найдент, то возвращаем 0 }
@georgyshilin7721
@georgyshilin7721 4 жыл бұрын
Спасибо, очень доступно объясняете
@ayxanzeynalov5483
@ayxanzeynalov5483 Жыл бұрын
Отличное видео , именно у вас всегда всё понятно. Очень жаль что видео больше не появляются,я бы поддержал канал финансово если б мог (
@evgenykonovalov4870
@evgenykonovalov4870 3 жыл бұрын
Топ! выучил плюса на ютубе! ты бог
@KurpatovInstagram
@KurpatovInstagram 6 жыл бұрын
Cпасибо!
@SM-uv1rr
@SM-uv1rr 4 жыл бұрын
Отличное объяснение. Спасибо.
@ivansherbinin2735
@ivansherbinin2735 6 жыл бұрын
Спасибо за урок
@ПетровичФёдор-р1ъ
@ПетровичФёдор-р1ъ 5 жыл бұрын
Очень подробно и доходчиво, спасибо!
@nata4518
@nata4518 7 ай бұрын
Спасибо большое!
@АлексейМелентьев-ч3в
@АлексейМелентьев-ч3в 3 жыл бұрын
Очень круто!
@hollowflk
@hollowflk Жыл бұрын
Просто и понятно😄
@ImVarlamov
@ImVarlamov 8 ай бұрын
Благодарю!
@overdoses1794
@overdoses1794 6 жыл бұрын
спасибо!
@feewre
@feewre 6 жыл бұрын
Удаление узла из бинарного дерева поиска. Не благодарите Нерекурсивная реализация Для удаления узла из бинарного дерева поиска нужно рассмотреть три возможные ситуации. Если у узла нет дочерних узлов, то у его родителя нужно просто заменить указатель на null. Если у узла есть только один дочерний узел, то нужно создать новую связь между родителем удаляемого узла и его дочерним узлом. Наконец, если у узла два дочерних узла, то нужно найти следующий за ним элемент (у этого элемента не будет левого потомка), его правого потомка подвесить на место найденного элемента, а удаляемый узел заменить найденным узлом. Таким образом, свойство бинарного дерева поиска не будет нарушено. Данная реализация удаления не увеличивает высоту дерева. Рекурсивная реализация При рекурсивном удалении узла из бинарного дерева нужно рассмотреть три случая: удаляемый элемент находится в левом поддереве текущего поддерева, удаляемый элемент находится в правом поддереве или удаляемый элемент находится в корне. В двух первых случаях нужно рекурсивно удалить элемент из нужного поддерева. Если удаляемый элемент находится в корне текущего поддерева и имеет два дочерних узла, то нужно заменить его минимальным элементом из правого поддерева и рекурсивно удалить этот минимальный элемент из правого поддерева. Иначе, если удаляемый элемент имеет один дочерний узел, нужно заменить его потомком
@sorokousov
@sorokousov 4 жыл бұрын
Это самая интересная часть)
@aliakseikatsar5815
@aliakseikatsar5815 2 жыл бұрын
Огромное спасибо!
@AndriiStreange
@AndriiStreange 4 жыл бұрын
Настолько подробно объяснил , что мне аж интересно стало откуда ты брал инфу били же сам составлял текст для объяснений ?
@tesohi
@tesohi 9 ай бұрын
огрооооомное спасибо
@Orange_999
@Orange_999 Ай бұрын
Спасибо.
@АлександрНазаров-ш7н
@АлександрНазаров-ш7н 6 жыл бұрын
6:23 На самом деле очень даже можем . если создадим в двусвязном списке ссылку на средний элемент тогда то сможем отталкиваться от него и двигаться либо в сторону начала , или в сторону конца(как вариант))
@ramazanisaev46
@ramazanisaev46 5 жыл бұрын
можно еще , используя размер и индекс .
@alexandrsargsyan2202
@alexandrsargsyan2202 2 жыл бұрын
bratan ogromnoe spasibo ))
@MrCraick0
@MrCraick0 4 жыл бұрын
Вы ошиблись по поводу словоря в c#. У него под капотом не дерево, а хэш таблица и доступ по ключу у хэш таблицы всегда o(1). А у бинарного дерева в среднем о(lgn) и в худщем o(N), если мы почитаем документацию по словарю увидим, что чтение из словаря в c# занимает o(1)
@НиколайОвчинников-д6э
@НиколайОвчинников-д6э 3 жыл бұрын
крутая вещь, это бинарное дерево
@brenkovd
@brenkovd 3 жыл бұрын
Сижу я такой смотрю про двусвязные списки и димаю , а почему бы не организовать структуру .. ( и такой в голове придумываю нечто похожее на бинарное дерево) . Открываю следующее видео и .. а ну да , точно)) Кстати эти все структуры данных описаны в книге Дональда Кнута 1 том, но как хорошо описаны я не знаю так как без математической подготовки я просто пока - что открываю книгу и просто нюхаю))) Но там описание не привязано к конкретному языку программирования , так что очень полезно
@BloodVesselTM
@BloodVesselTM 4 жыл бұрын
Продвигаем в топы
@ЖадыраШыныбаева
@ЖадыраШыныбаева 3 жыл бұрын
Спасибо !
@nikitun85
@nikitun85 2 жыл бұрын
7:00 вот тут было бы неплохо, может быть, забежать вперед и рассказать, как в такое дерево добавлялось бы, например, число 2. Когда есть узел со значением 1 и из него уже выходит дочерний узел со значением 30. Это можно сделать, не переписывая дерево?
@unukhtv7196
@unukhtv7196 Жыл бұрын
так двойка просто запишется с левой части от 30
@pandalove6795
@pandalove6795 4 жыл бұрын
Еще круто что слева находиться минимальное число, а справа максимальное
@andrey6552
@andrey6552 2 жыл бұрын
Спасибо :)
@Yurii-b4k
@Yurii-b4k 7 ай бұрын
Нужно уточнение, что это бинарное дерево поиска :D
@hedgehoginthefog3896
@hedgehoginthefog3896 6 жыл бұрын
Доброго времени суток! Спасибо за качественные уроки! В одном из первых ваших видео Вы говорили, что также планируете делать уроки по C#. Хотелось бы узнать когда их ждать?
@ouma45
@ouma45 2 жыл бұрын
Пора
@lizenox
@lizenox 2 жыл бұрын
рора
@chuuhan1
@chuuhan1 2 жыл бұрын
Бро, 3 года начались уроки по c#, бужу тебя, вдруг ты пропустил
@smrsgv
@smrsgv 6 жыл бұрын
великолепно!
@outcast-cr5yy
@outcast-cr5yy 6 жыл бұрын
Спасибо
@andrewv8140
@andrewv8140 6 жыл бұрын
А что если на вход подается ряд значений, уже отсортированный по возрастанию/убыванию, все элементы будут уходить каждый раз в правую/левую ветку? Как тогда быть с идеально сбалансированными бинарными деревьями?
@o_o2291
@o_o2291 3 жыл бұрын
Можно сделать проверку на количество символов, разделить на 2 и брать корнем элемент под данным индексом
@immickful
@immickful 2 жыл бұрын
Для того, чтобы формально была понятна разница м/у связанными списками и бин. деревьями надо бы указывать сложности для тех и других. А так, это "лучше и быстрее" плохо осязаемо же.
@Tyr4noBuba
@Tyr4noBuba 2 жыл бұрын
Все и так понятно..
@mykhailomorhal2181
@mykhailomorhal2181 6 жыл бұрын
Спасибо)
@borisshalabanov4620
@borisshalabanov4620 6 жыл бұрын
Спасибо, а будет урок по реализации дерева?)
@mishalavik4595
@mishalavik4595 4 жыл бұрын
public class BinaryTree { public int Value; public BinaryTree Left; public BinaryTree Right; public BinaryTree(int value) { Value = value; } public void Add(int value) { if (value < Value) { if (Left == null) Left = new BinaryTree(value); else Left.Add(value); } else { if (Right == null) Right = new BinaryTree(value); else Right.Add(value); } } } // Как-то так, дальше сам додумывай
@bocik2854
@bocik2854 4 жыл бұрын
@@mishalavik4595 Спасибо!!!))
@quadroninja2708
@quadroninja2708 3 жыл бұрын
Вроде же рассказали
@vladsn.2119
@vladsn.2119 3 жыл бұрын
@@mishalavik4595 Рекурсивная реализация?
@timur2887
@timur2887 2 жыл бұрын
А как происходит построение дерева?
@ANTONY-vk3pu
@ANTONY-vk3pu 2 жыл бұрын
А можно реализацию на c#?
@pigsel2509
@pigsel2509 2 жыл бұрын
СПАСИБО)) Можно реализацию на с++?
@АртёмБахарев-б4у
@АртёмБахарев-б4у 6 жыл бұрын
Сергей, спасибо за урок! Есть в планах делать уроки по формам и оконным приложениям в Visual Studio?
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
есть winforms и wpf
@АртёмБахарев-б4у
@АртёмБахарев-б4у 6 жыл бұрын
Winforms)
@jangiryanarsen4952
@jangiryanarsen4952 6 жыл бұрын
Продолжайте C++ и его теорию
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
6:15 >> Поиск по индексу будет проходить очень медленно, и нам никак не обойти ... Можно обойти - нужно хранить в узле дерева количество всех дочерних узлов.
@ДмитрийСидоров-й8и
@ДмитрийСидоров-й8и 2 жыл бұрын
Здравствуйте а для python бинарное дерево также создается?
@NofaceAndrew
@NofaceAndrew 7 ай бұрын
Разве мапы и ассоциативные массивы не используют хэш-таблицы и хэш-сеты?
@ПавелКузнецов-ш2б
@ПавелКузнецов-ш2б 5 жыл бұрын
крутое видео
@artemivanov2141
@artemivanov2141 6 жыл бұрын
Это вы объясняете про бинарное дерево поиска, в просто бинарном дереве данные не упорядочены
@delalen8012
@delalen8012 4 жыл бұрын
Это точно так? Уверены?
@Dungeon_masster228
@Dungeon_masster228 4 жыл бұрын
Насколько я понял по механике бинарного дерева, оно просто не может быть неупорядоченным, т.к. упорядочение происходит прямо в процессе создания бинарного дерева
@bogotoff
@bogotoff 4 жыл бұрын
​@@Dungeon_masster228 Бинарное дерево может быть не упорядоченным. Более того, в дереве могут быть не только числа, но и объекты любого типа. Главное условие бинарного дерева - каждый узел содержит не более двух потомков. Не более. А упорядочивание, балансирование(см. красно-черные деревья) это разновидность обычного бинарного дерева
@АнтонХоружий-и2э
@АнтонХоружий-и2э 4 жыл бұрын
@@bogotoff Тимур прав
@logionthecreator864
@logionthecreator864 4 жыл бұрын
смотри, ты можешь делать его неупорядоченным, если будешь рандомно класть элементы в дерево, но если ты создашь какой либо принцип вставки элемента в дерево(ну в основном как в видео), то ты сможешь быстро складывать элементы в дерево и быстро вынимать, что по должно быть само собой разумеющееся , иначе это трата ресурсов (ну рандомно кидать элементы) , которое ни к чему не приводит( брать элементы хз как)
@alexantro1946
@alexantro1946 2 жыл бұрын
чел помог
@adiletastana2781
@adiletastana2781 6 жыл бұрын
А как быть с удалением данных из дерева? Надеюсь будет дополнение к видео
@justr4390
@justr4390 5 жыл бұрын
Дерево будет сортироваться заново
@rasrabotchik
@rasrabotchik 2 жыл бұрын
для чего оно нужно?
@AShahabov
@AShahabov 4 жыл бұрын
Сделайте такое же видео по "Би-дерево".
@hecfi9461
@hecfi9461 3 жыл бұрын
Понятное о непонятном.
@gromitwoll6907
@gromitwoll6907 3 жыл бұрын
Что делать если список начинается с единицы ?
@ФедорКузнецов-е9у
@ФедорКузнецов-е9у 5 жыл бұрын
А как происходит удаление элементов?
@gsh137
@gsh137 2 жыл бұрын
это конечно замечательно, но жаль не рассказано как добавлять, если это какое то промежуточное значение (47 например)
@fiendgrin
@fiendgrin 11 ай бұрын
оно будет с правой стороны 46, нет никаких промежуточных значений
@vladislavjukov5764
@vladislavjukov5764 2 жыл бұрын
Спасибо за урок! Но есть вопрос) А как дерево поведет себя при вставке одинаковых чисел (дубликатов)?
@inf888
@inf888 2 жыл бұрын
В таком случае можно сделать счетчик повторяющихся элементов, но вообще со стандартной реализацией повторяющиеся элементы в большинстве случаев будут попадать правее от себе подобного числа (но в теории могут быть и под ними, то есть изначально зайти в правую ветку от него, но потом свернуть влево), которое добавлялось раньше
@pelevin_idi_nahui
@pelevin_idi_nahui 4 жыл бұрын
Привет от учеников 21й школы !
@kaynsolo
@kaynsolo 6 жыл бұрын
Like!
@r_lonef
@r_lonef 2 жыл бұрын
який же кайф коли музики на фоні нема, не відволікає увагу, дякую!
@ДмитрийНеизвестный-е4х
@ДмитрийНеизвестный-е4х 3 жыл бұрын
Дикшенери в шарпе - не дерево, а хэш таблица, если не ошибаюсью
@SimpleCodeIT
@SimpleCodeIT 3 жыл бұрын
угу
@MsT0mahawk
@MsT0mahawk 2 жыл бұрын
Верно.
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
9:33 Бинарный поиск в связном списке? Это возможно?
@aznaurataev9497
@aznaurataev9497 4 жыл бұрын
Это возможно в любой отсортированной коллекции.
@Mike-hp3fh
@Mike-hp3fh 4 жыл бұрын
@@aznaurataev9497 только если возможно получить элемент по индексу за время O(1)
@aznaurataev9497
@aznaurataev9497 4 жыл бұрын
@@Mike-hp3fh в плюсах бинарный поиск - это функция работающая с итераторами, ей все равно за сколько есть возможность получить Эл-т, если она есть. Другое дело если мы говорим о её скорости работы. Но факт есть факт и бин поиск на листе запустить можно.
@bandirdana-1144
@bandirdana-1144 3 жыл бұрын
А почему 50
@AdCoder
@AdCoder 6 жыл бұрын
Вопрос: на работе программисту обязательно знать наизусть что и как писать код , чтобы решить ту или иную задачу ? Ну допустим он понимает как это работает и у него есть под рукой готовый для решения данной задачи код ... его же работодатель за это никак занижать не будет ?
@Igor_Morozov
@Igor_Morozov 6 жыл бұрын
GameStudio Вы искренно верите, что работодатель будет ковыряются в вашем коде? ))) А в общем, для этого и существуют либы, паттерны, ну и копипаст ). Просто без понимания вы не сможете их применить и будете изобретать велосипед. А изобретательство велосипедов оно такое. Часто даже затягивает, как правило во вред результату. )
@ДмитрийСолярис-п9ц
@ДмитрийСолярис-п9ц 2 жыл бұрын
Какие минусы бинарного дерева?
@ilyasabutalibli8086
@ilyasabutalibli8086 2 жыл бұрын
у меня вопрос : мы же можем под 49 слева указать 30 также
@fiendgrin
@fiendgrin 11 ай бұрын
нет не можем 30 меньше 45
@nika7149
@nika7149 2 жыл бұрын
А если в корне - 50, а оба последующих числа - меньше 50ти?
@melonystalker3714
@melonystalker3714 2 жыл бұрын
Будет перекос в одну сторону
@mlpython1089
@mlpython1089 2 жыл бұрын
Т.е. это аналогия дерева решений в машинном обучении.
@bossmusa9075
@bossmusa9075 4 жыл бұрын
и когда юзать бинарное дерево, а когда список?
@axentfly8945
@axentfly8945 6 жыл бұрын
А если в примере к головному числу 50 добавить 50, то что??
@KiberDoktoR
@KiberDoktoR 4 жыл бұрын
Зависит от реализации. В эталоне - элемент не вставляется как в множестве (сете). Либо вставляется слева как в мультисете.
@trixion74
@trixion74 2 жыл бұрын
@@KiberDoktoR а что на счет добавления в места, которые уже заняты (к примеру, если попробовать добавить число 52 на моменте 7:25 , то что-то не складывается)
@-vd2gk
@-vd2gk Жыл бұрын
А если число повторяется?
@Kalin_cheetah
@Kalin_cheetah Жыл бұрын
В бинарном дереве все числа-ключи уникальны
@ВсеволодЗорин-л6н
@ВсеволодЗорин-л6н 6 жыл бұрын
а если добавить номер 50, к примеру, с которого уже началось дерево?... а с удалением как дела обстоят?
@axentfly8945
@axentfly8945 6 жыл бұрын
Сам думал на эту тему. Оказалось просто, при реализации дерева можно прописывать условия типа >= или = число 50 попадет вправо, а если
@ГеннадийСамойлов-с4ю
@ГеннадийСамойлов-с4ю 4 жыл бұрын
@@axentfly8945 я видал делали так: < в левую часть > в правую часть == игнорировали число
@bossmusa9075
@bossmusa9075 4 жыл бұрын
11:05
@Виталий-щ6ь6о
@Виталий-щ6ь6о 6 жыл бұрын
было бы хорошо если б вы привели пример ипользования бинарного дерева, так как к примеру если добавлять данные по мере роста или убыванию их значения, тогда получится тот же односвязный список
@SimpleCodeIT
@SimpleCodeIT 6 жыл бұрын
Примет скоро будет в уроках по STL.
@MsT0mahawk
@MsT0mahawk 2 жыл бұрын
Все правильно. И скорость поиска в таком случае будет одинаковая (по сравнению с односвязанным списком). К сожалению не раскрыта тема балансировки и удаления.
@errorgrisha
@errorgrisha 5 жыл бұрын
Сложность доступа я так понимаю log(N)?
@Alh45011
@Alh45011 4 жыл бұрын
да
@KiberDoktoR
@KiberDoktoR 4 жыл бұрын
Для сбалансированного дерева. Для худшего случая дерева это - n.
@КостяСеребрянский-т1ю
@КостяСеребрянский-т1ю Ай бұрын
"самый первый элемент, у которого нет родителей"
Односвязный список на python
17:14
Random Coder
Рет қаралды 4,7 М.
АВЛ дерево. основные операции
8:26