Тёмный
No video :(

Java. Деревья ч.1. Рекурсивный обход в глубину. 

Sergey Arkhipov Java Tutorials
Подписаться 20 тыс.
Просмотров 38 тыс.
50% 1

Исходный код:
github.com/Arh...
В данном видео содержится краткий обзор такой структуры данных как дерево. Говорим о том, что такое дерево, какие деревья бывают, для чего применяются и какую роль играют в информатике и программировании. Далее рассматриваем, как создать класс для представления бинарного дерева на языке программирования Java. После этого пишем и разбираем алгоритм рекурсивного обхода дерева в глубину.
Ссылки на источники и авторов иллюстраций к данному видео:
Социальный граф
ru.wikipedia.o...
Автор иллюстрации: Festys - собственная работа, CC BY-SA 3.0, commons.wikime...
Красно-черное дерево
ru.wikipedia.o...
Автор иллюстрации: Cburnett - собственная работа, CC BY-SA 3.0, commons.wikime...
B-дерево
ru.wikipedia.o...
Иллюстрация CC BY-SA 3.0, commons.wikime...
BSP-дерево
ru.wikipedia.o...
Автор иллюстрации: Jkwchui - собственная работа, CC BY-SA 3.0, commons.wikime...
Октодерево
ru.wikipedia.o...
Автор иллюстрации: Nü, CC BY-SA 3.0, commons.wikime...
Префиксное дерево
ru.wikipedia.o...
Автор иллюстрации: Varvara Krayvanova - собственная работа, CC BY-SA 4.0, commons.wikime...
Поддержать канал💰:
yoomoney.ru/to...
#ArhiTutorialsJava #ityoutubersru

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

 

13 авг 2019

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 98   
@IIJustIIsicariusII
@IIJustIIsicariusII 3 года назад
Какое же простое объяснение алгоритма! Решил пересмотреть весь ваш плейлист по алгоритмам.
@_Latcarf_
@_Latcarf_ Год назад
Забавно, вижу ваши комментарии и под лекциями в JavaRush =)
@sasharobson
@sasharobson 3 года назад
Автору ОГРОМНЫЙ респект. Очень грамотно объясняет. С предысторией, примерами и пояснениями зачем и почему. Однозначно подписка. Спасибо!
@user-bw8qw3fz1f
@user-bw8qw3fz1f 2 года назад
Мужик, ты красавчик! До этого видео пробовал читать другие ресурсы - мало что понял. А из этого видео сразу все стало ясно. Спасибо! Все таки умение объяснять доступно - очень ценный навык.
@user-ls7wo3fl4u
@user-ls7wo3fl4u 3 года назад
Сергей, огромное спасибо за Ваш труд. Посмотрел уже не один Ваш ролик. Объяснения понятные, с отличными примерами кода, схемы и картинки здорово дополняют материал! Коллеги-обучающиеся, давайте поддержим канал по ссылке под видео.
@arhitutorials
@arhitutorials 3 года назад
Спасибо!
@s.k.6563
@s.k.6563 3 года назад
При изучении ранее пытался разобраться с деревьями по всяким заумных хабрам-швабрам, потратил время. Здесь все предельно ясно и понятно! Самый понятный канал по изучению - коротко, понятно и с простыми примерами.
@yuriytheone
@yuriytheone Год назад
Просто, ты - идиот! 🎉
@user-vp2cz6mu2y
@user-vp2cz6mu2y Год назад
Объяснения лучше, чем на дорогущих курсах...Спасибо Вам большое! Пошла смотреть другие Ваши ролики! Лайк
@mrslavik2104
@mrslavik2104 2 года назад
Офигеть это нечего не сказать, в универе вообще тему не понял,от слова совсем, посмотрев это видео все стало намного понятнее, Спасибо Огромное автору!
@user-rl1hs3jf7l
@user-rl1hs3jf7l 4 года назад
Спасибо большое! Очень помогли решить такую задачу! Вы единственный кто хорошо объясняет Java! Я вам очень благодарен!
@automanautomation9845
@automanautomation9845 3 года назад
Вот правильно говорят, когда человек понимает он может доступно объяснить, спасибо за уроки!
@d.mertsalov
@d.mertsalov 5 лет назад
Всё наглядно и понятно! Спасибо за видео! Надеюсь на продолжение темы.:)
@dharbemasadjibwe9826
@dharbemasadjibwe9826 2 года назад
Сергей, спасибо большое. Лучшего объяснения я не видел, это большое подспорье в изучении структуры данных.
@mehaletz
@mehaletz 3 года назад
Очень четкое и понятное обьяснение без лишней воды. Спасибо за науку.
@cwnik
@cwnik 4 года назад
Отличное видео, лушче пока не видел, плюс понятно как работает компилятор в данном случае
@WakeUp_Lia
@WakeUp_Lia 3 года назад
тема интересная, очень нравится как вы все детально объясняете. Спасибо)
@hgfdtj3151
@hgfdtj3151 2 года назад
Спасибо за урок. Перевел 10₽ за объяснение. Призываю всех делать также. Нужно поддерживать хороших авторов и не скупиться. Так мы станем жить лучше!
@arhitutorials
@arhitutorials 2 года назад
Спасибо, получил.
@mistrebrown7642
@mistrebrown7642 4 года назад
Огромное спасибо, Сергей! Было бы интересно увидеть больше роликов про деревья
@Euraks
@Euraks Год назад
Очень доходчиво. Просто о сложном. У вас талант. Спасибо.👍
@user-bu1jo5kn4x
@user-bu1jo5kn4x 5 лет назад
Большое спасибо, очень хорошо все объяснил. Пожалуй лучшее видео на эту тему из всех, что пересмотрел.
@antonprotasov941
@antonprotasov941 2 года назад
Прекрасное объяснение! Большое спасибо, Сергей, за ваш труд! Столкнулся с задачей на курсе изучения Java. Тему предварительно не рассказывали, рекурсию не объясняли. Про рекурсию я ранее слышал, но не совсем понимал прикладное значение. Ваше видео - доступнее всего раскрывает тему бинарных деревьев из всех материалов, что я встретил на просторах рунета.
@ascar66
@ascar66 3 года назад
Спасибо вам большое, с третьего раза все понятно стало. В общем пока сам не напишешь не подебажишь не разберешься
@dimitribolt6006
@dimitribolt6006 2 года назад
Комметрарий в поддержку. По сути: Хотелось бы уроки и по другим базовым алгоритмам. Особенно по тем, что дают на тестах в Leetcode и Codility. Уроки хотелось бы на Java. Так же не скупитесь на схемы объясняющие ход выполнения программы. Спасибо.
@partiec6065
@partiec6065 10 месяцев назад
Спасибо! Ваши ролики часто выручают в, казалось бы, безвыходных ситуациях :)
@TheSollne4naja
@TheSollne4naja 5 лет назад
спасибо за видео! очень полезная информация, изложенная подробно и озвученная приятно. Ждем продолжения!
@user-rg7rn6jz5n
@user-rg7rn6jz5n 4 года назад
Спасибо, благодаря Вашему видео получилось решить задачу)
@kafychannel
@kafychannel Год назад
очень помогло, Спасибо, Сергей!
@user-mm6pl5re8l
@user-mm6pl5re8l 3 года назад
Спасибо. Отличная подача материала!
@NikolayMishin
@NikolayMishin 10 месяцев назад
Потрясно, спасибо за понятное объяснение 🔥
@user-ve8jb1yw8d
@user-ve8jb1yw8d 4 года назад
Спасибо за видео! Интересно продолжение темы.
@user-fj7on8le9g
@user-fj7on8le9g Год назад
Большое спасибо очень крутое объяснение как считать глубину
@sloppyaerials4463
@sloppyaerials4463 3 года назад
Спасибо, все доходчиво объяснено
@vladimir1992XPrg
@vladimir1992XPrg 2 года назад
Спасибо, очень хорошо объясняете )
@gremlingomelsky28
@gremlingomelsky28 3 года назад
Спасибо! Супер, все наглядно и понятно!
@borkman6285
@borkman6285 2 года назад
просто супер объяснение спасибо!
@user-zl2kb2ze3m
@user-zl2kb2ze3m Год назад
Супер объяснение! Спасибо! :)
@TheMrDenissko
@TheMrDenissko 2 года назад
Большое спасибо!! Очень интересно.
@iryna268
@iryna268 4 года назад
Спасибо за видео. Все очень доступно объяснили.
@dmytrobudym8655
@dmytrobudym8655 3 года назад
Отличное объяснение) спасибо)
@Aticinsane
@Aticinsane 2 года назад
Спасибо вам! Предельно понятно.
@Andrzej3935
@Andrzej3935 3 года назад
Спасибо вам, добрый человек!
@vitaliypovzner9178
@vitaliypovzner9178 5 лет назад
Спасибо за видео!Подписался на твой канал,отлично излагаешь информацию!
@user-lk8n0fgjk
@user-lk8n0fgjk 3 месяца назад
Отличное видео. Спасибо за доступное и понятное объяснение!
@anjelomanoranjan
@anjelomanoranjan 5 месяцев назад
Серега, обожаю твои видео! Продолжай пожалуйста снимать обучающие туториалы по Java
@apatrisianislav7106
@apatrisianislav7106 3 года назад
Как всегда все понятно, спасибо
@maximk0
@maximk0 5 месяцев назад
Спасибо, видео помогло понять почему обход назвали "рекурсивным":) До этого видео было полное непонимание как раз в первую очередь из-за названия)
@alexeypashchenko
@alexeypashchenko 2 года назад
Спасибо за видео!
@gulfstream1800
@gulfstream1800 2 года назад
Классное видео. Спасибо!
@AntonRodriges
@AntonRodriges 4 года назад
Спасибо! Очень познавательно!
@roseline8831
@roseline8831 3 года назад
спасибо за урок
@ratmirsusanin5496
@ratmirsusanin5496 3 года назад
Спасибо!Отличное видео!!!
@user-ow7mh1zb2b
@user-ow7mh1zb2b 4 года назад
Спасибо, хорошо объяснил)
@user-ez6ng5ze6z
@user-ez6ng5ze6z 5 лет назад
Нихуя, я не знаю как тут не материться. Все хорошо объясняешь, да еще и с картинками. Спасибо за ваши уроки
@ercefwxdx
@ercefwxdx 3 года назад
Спасибо. Отличное видео
@divergenny
@divergenny 3 года назад
Благодарю за ваш труд
@bxneslxrd2224
@bxneslxrd2224 Год назад
спасибо за объяснение
@BestBrilliantBoY
@BestBrilliantBoY 2 года назад
Спасибо большое.
@MC-RAY
@MC-RAY Год назад
Просто лучший🎉
@kironpapon
@kironpapon 4 года назад
чому так мало просмотров!?!? автору ставлю класс!
@artemshandrikov2278
@artemshandrikov2278 3 года назад
Спасибо!
@johannesbrown8853
@johannesbrown8853 5 лет назад
Супер!
@mobilafilm
@mobilafilm Год назад
очень круто!
@caffeinejavacode1475
@caffeinejavacode1475 3 года назад
Спасибо! я так понял эта рекурсивная магий просисходит из за того что у нас поле того же типа что и класс ну и конструктор естественно принимает тот же тип. Правильно?
@BC-uj4nu
@BC-uj4nu 2 года назад
Суперклассное объяснение, только произносите правильно: null - [нал], sum - [сам]. А то потом у англоязычных коллег ухи вянут.
@SS-vq7lo
@SS-vq7lo 4 года назад
Мужик ты Молодец, но можно я придерусь? Сейчас очень много блоггеров говорят “так же самое” и появилось много людей которые начали говорить так же, раньше никогда такого не слышал. Откуда взялось это выражение? Это же два разных слова которые не имеют ничего общего между собой. Может все таки “то же самое”? Если человек вещает для масс то он просто обязан говорить правильно. А за материал спасибо, самое главное что было показано в отладчике что происходит. Очень понятно
@TSAR_TOP
@TSAR_TOP 3 года назад
нельзя
@Mastervmf
@Mastervmf 3 года назад
Это лучшее видео
@Denis-wn1xr
@Denis-wn1xr 3 года назад
спасибо!!
@user-mx6uk6gi5e
@user-mx6uk6gi5e 3 года назад
super!!!
@romanryaboshtan9270
@romanryaboshtan9270 2 года назад
балансировка интересна
@DJCrush1000
@DJCrush1000 2 года назад
На Python делается проще: class Node: def __init__(self, value, left_node=None, right_node=None): self.value = value self.left_node = left_node self.right_node = right_node def sum(self): sum = self.value if self.left_node: sum += self.left_node.sum() if self.right_node: sum += self.right_node.sum() return sum tree = Node(20, Node(7, Node(4, right_node=Node(6)), Node(9)), Node(35, Node(31, Node(28)), Node(40, Node(38), Node(52)))) print(tree.sum())
@vantonyan4217
@vantonyan4217 3 года назад
класс
@info_infoman
@info_infoman Год назад
А в жава нет готового фремворка для деревьев? Типа кубернейта
@temirlandivine3505
@temirlandivine3505 2 года назад
Примеры графов: Граф похожих на друг друга аниме, или фильмов или сериалов, или книг и т.д по мнению зрителей План в виде графа, есть цели, на пути которым есть задачи, и есть связи между целями, это значит одна задача ведет для двух целей.
@kalyan116rus
@kalyan116rus 4 года назад
суть понятна, построение понятно, но не компилируется IDEA рисует ошибки((((((
@kalyan116rus
@kalyan116rus 4 года назад
всё))))) нашел ошибку, не сделал класс статическим
@arhitutorials
@arhitutorials 4 года назад
@@kalyan116rus хорошо, а то я уже было запустил IDEA, собрался разбираться что не так))
@aleksejsigaj1373
@aleksejsigaj1373 2 месяца назад
Дерево состоит из деревьев или из нод?
@automanautomation9845
@automanautomation9845 3 года назад
Внимание глупый вопрос, а зачем class Tree сделали статическим? в итоге получили static class Tree, не совсем понял зачем вы так сделали.
@arhitutorials
@arhitutorials 3 года назад
Чтобы подчеркнуть, что Tree - не внутренний класс класса Main и может работать независимо от него.
@sLasHee85
@sLasHee85 2 года назад
Странный метод main, в котором в качестве аргумента принимается массив с наименованием params. Вcегда считал именование args неизменным для JVM
@arhitutorials
@arhitutorials 2 года назад
Нужно чтоб сигнатура метода была правильная, а как при этом называются параметры, значения не имеет.
@BookwormYevgen
@BookwormYevgen 3 года назад
Построением дерева занимаются специальные алгоритмы.... Так это же как раз и самое интересное!!! И зачем отдельно конструктор для листьев? Разве нельзя использовать тот же конструктор, передавая в качестве потомков null??
@arhitutorials
@arhitutorials 3 года назад
А какой смысл экономить на конструкторах? Наоборот, на каждый случай использования нужно сделать по конструктору) В нашем случае в коде будет сразу видно где лист создается, а где полноценный узел. Это же хорошо?
@BookwormYevgen
@BookwormYevgen 3 года назад
@@arhitutorials Не могу сказать, хорошо это или плохо, я не настолько обладаю опытом, просто мне показалось избыточным. И с точки зрения разделения ответственности и декомпозиции, получение строковых последовательностей для отдельных символов(getCodeForChar) в составе класса, описывающего узел, мне показалось чуждым.
@naivais
@naivais 4 года назад
название класса, вроде как, пишется с заглавной буквы?
@arhitutorials
@arhitutorials 4 года назад
Да, вы правы. Написал и не заметил ошибки(
@naivais
@naivais 4 года назад
@@arhitutorials странно что IDEA такое пропустила
@arhitutorials
@arhitutorials 4 года назад
@@naivais это нормально. Синтаксисом Java не запрещено называть классы с маленькой буквы. Это просто такое общепринятое соглашение. Кстати в IDEA можно настроить code guidelines как надо, и тогда такие вещи будут подчеркиваться. Но у меня чистая IDEA без кастомных настроек, по этому пропускает.
@rednex2013
@rednex2013 Год назад
Как посчитать количество листьев в таком дереве?
@partiec6065
@partiec6065 10 месяцев назад
int sum(){ int sum = 1; // было int sum = value; if (left != null){ sum += left.sum(); } if (right != null){ sum += right.sum(); } return sum; }
@user-hx5vf6ve2t
@user-hx5vf6ve2t 3 года назад
скажите пожалуйста, что это за IDE ?
@user-eo3ik1su3i
@user-eo3ik1su3i 3 года назад
Это IntelliJ IDEA
@Scruner-7
@Scruner-7 3 года назад
"На практике этим заниматься не надо, это делает специальный алгоритм", а обучение не для практики? Почему тогда не показать сразу в сравнении, как это делается на практике?
@BobrKurvva
@BobrKurvva 2 месяца назад
спасибо
@revolteen
@revolteen 3 года назад
Спасибо! Очень познавательно!
Далее
Java. Очередь и стек.
22:03
Просмотров 21 тыс.
Java. Лямбда-выражения.
23:47
Просмотров 33 тыс.