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

Поділитися
Вставка
  • Опубліковано 13 сер 2019
  • Исходный код:
    github.com/Arhiser/java_tutor...
    В данном видео содержится краткий обзор такой структуры данных как дерево. Говорим о том, что такое дерево, какие деревья бывают, для чего применяются и какую роль играют в информатике и программировании. Далее рассматриваем, как создать класс для представления бинарного дерева на языке программирования Java. После этого пишем и разбираем алгоритм рекурсивного обхода дерева в глубину.
    Ссылки на источники и авторов иллюстраций к данному видео:
    Социальный граф
    ru.wikipedia.org/wiki/%D0%A1%...
    Автор иллюстрации: Festys - собственная работа, CC BY-SA 3.0, commons.wikimedia.org/w/index...
    Красно-черное дерево
    ru.wikipedia.org/wiki/%D0%9A%...
    Автор иллюстрации: Cburnett - собственная работа, CC BY-SA 3.0, commons.wikimedia.org/w/index...
    B-дерево
    ru.wikipedia.org/wiki/B-%D0%B...
    Иллюстрация CC BY-SA 3.0, commons.wikimedia.org/w/index...
    BSP-дерево
    ru.wikipedia.org/wiki/%D0%94%...
    Автор иллюстрации: Jkwchui - собственная работа, CC BY-SA 3.0, commons.wikimedia.org/w/index...
    Октодерево
    ru.wikipedia.org/wiki/%D0%9E%...
    Автор иллюстрации: Nü, CC BY-SA 3.0, commons.wikimedia.org/w/index...
    Префиксное дерево
    ru.wikipedia.org/wiki/%D0%9F%...
    Автор иллюстрации: Varvara Krayvanova - собственная работа, CC BY-SA 4.0, commons.wikimedia.org/w/index...
    Поддержать канал💰:
    yoomoney.ru/to/410018856244871
    #ArhiTutorialsJava #ityoutubersru

КОМЕНТАРІ • 98

  • @IIJustIIsicariusII
    @IIJustIIsicariusII 3 роки тому +39

    Какое же простое объяснение алгоритма! Решил пересмотреть весь ваш плейлист по алгоритмам.

    • @_Latcarf_
      @_Latcarf_ Рік тому +2

      Забавно, вижу ваши комментарии и под лекциями в JavaRush =)

  • @user-lk8n0fgjk
    @user-lk8n0fgjk Місяць тому

    Отличное видео. Спасибо за доступное и понятное объяснение!

  • @user-bw8qw3fz1f
    @user-bw8qw3fz1f 2 роки тому +5

    Мужик, ты красавчик! До этого видео пробовал читать другие ресурсы - мало что понял. А из этого видео сразу все стало ясно. Спасибо! Все таки умение объяснять доступно - очень ценный навык.

  • @mrslavik2104
    @mrslavik2104 2 роки тому +2

    Офигеть это нечего не сказать, в универе вообще тему не понял,от слова совсем, посмотрев это видео все стало намного понятнее, Спасибо Огромное автору!

  • @sasharobson
    @sasharobson 3 роки тому +1

    Автору ОГРОМНЫЙ респект. Очень грамотно объясняет. С предысторией, примерами и пояснениями зачем и почему. Однозначно подписка. Спасибо!

  • @automanautomation9845
    @automanautomation9845 2 роки тому +1

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

  • @user-vp2cz6mu2y
    @user-vp2cz6mu2y Рік тому +1

    Объяснения лучше, чем на дорогущих курсах...Спасибо Вам большое! Пошла смотреть другие Ваши ролики! Лайк

  • @dharbemasadjibwe9826
    @dharbemasadjibwe9826 Рік тому +1

    Сергей, спасибо большое. Лучшего объяснения я не видел, это большое подспорье в изучении структуры данных.

  • @hgfdtj3151
    @hgfdtj3151 2 роки тому +1

    Спасибо за урок. Перевел 10₽ за объяснение. Призываю всех делать также. Нужно поддерживать хороших авторов и не скупиться. Так мы станем жить лучше!

  • @ascar66
    @ascar66 3 роки тому +2

    Спасибо вам большое, с третьего раза все понятно стало. В общем пока сам не напишешь не подебажишь не разберешься

  • @user-rl1hs3jf7l
    @user-rl1hs3jf7l 4 роки тому +3

    Спасибо большое! Очень помогли решить такую задачу! Вы единственный кто хорошо объясняет Java! Я вам очень благодарен!

  • @WakeUp_Lia
    @WakeUp_Lia 3 роки тому +3

    тема интересная, очень нравится как вы все детально объясняете. Спасибо)

  • @mehaletz
    @mehaletz 3 роки тому +1

    Очень четкое и понятное обьяснение без лишней воды. Спасибо за науку.

  • @d.mertsalov
    @d.mertsalov 4 роки тому +25

    Всё наглядно и понятно! Спасибо за видео! Надеюсь на продолжение темы.:)

  • @dimitribolt6006
    @dimitribolt6006 Рік тому +1

    Комметрарий в поддержку.
    По сути: Хотелось бы уроки и по другим базовым алгоритмам. Особенно по тем, что дают на тестах в Leetcode и Codility. Уроки хотелось бы на Java. Так же не скупитесь на схемы объясняющие ход выполнения программы. Спасибо.

  • @s.k.6563
    @s.k.6563 3 роки тому +4

    При изучении ранее пытался разобраться с деревьями по всяким заумных хабрам-швабрам, потратил время. Здесь все предельно ясно и понятно! Самый понятный канал по изучению - коротко, понятно и с простыми примерами.

    • @yuriytheone
      @yuriytheone Рік тому

      Просто, ты - идиот! 🎉

  • @cwnik
    @cwnik 4 роки тому +4

    Отличное видео, лушче пока не видел, плюс понятно как работает компилятор в данном случае

  • @kafychannel
    @kafychannel Рік тому +2

    очень помогло, Спасибо, Сергей!

  • @user-bu1jo5kn4x
    @user-bu1jo5kn4x 4 роки тому +9

    Большое спасибо, очень хорошо все объяснил. Пожалуй лучшее видео на эту тему из всех, что пересмотрел.

  • @user-ls7wo3fl4u
    @user-ls7wo3fl4u 3 роки тому +11

    Сергей, огромное спасибо за Ваш труд. Посмотрел уже не один Ваш ролик. Объяснения понятные, с отличными примерами кода, схемы и картинки здорово дополняют материал! Коллеги-обучающиеся, давайте поддержим канал по ссылке под видео.

  • @partiec6065
    @partiec6065 8 місяців тому

    Спасибо! Ваши ролики часто выручают в, казалось бы, безвыходных ситуациях :)

  • @user-rg7rn6jz5n
    @user-rg7rn6jz5n 4 роки тому +4

    Спасибо, благодаря Вашему видео получилось решить задачу)

  • @antonprotasov941
    @antonprotasov941 2 роки тому +1

    Прекрасное объяснение! Большое спасибо, Сергей, за ваш труд! Столкнулся с задачей на курсе изучения Java. Тему предварительно не рассказывали, рекурсию не объясняли. Про рекурсию я ранее слышал, но не совсем понимал прикладное значение. Ваше видео - доступнее всего раскрывает тему бинарных деревьев из всех материалов, что я встретил на просторах рунета.

  • @Euraks
    @Euraks Рік тому +1

    Очень доходчиво. Просто о сложном. У вас талант. Спасибо.👍

  • @user-fj7on8le9g
    @user-fj7on8le9g Рік тому +1

    Большое спасибо очень крутое объяснение как считать глубину

  • @NikolayMishin
    @NikolayMishin 8 місяців тому +1

    Потрясно, спасибо за понятное объяснение 🔥

  • @mistrebrown7642
    @mistrebrown7642 4 роки тому +7

    Огромное спасибо, Сергей! Было бы интересно увидеть больше роликов про деревья

  • @TheSollne4naja
    @TheSollne4naja 4 роки тому +5

    спасибо за видео! очень полезная информация, изложенная подробно и озвученная приятно. Ждем продолжения!

  • @user-zl2kb2ze3m
    @user-zl2kb2ze3m Рік тому +1

    Супер объяснение! Спасибо! :)

  • @user-mm6pl5re8l
    @user-mm6pl5re8l 3 роки тому +4

    Спасибо. Отличная подача материала!

  • @vladimir1992XPrg
    @vladimir1992XPrg 2 роки тому +1

    Спасибо, очень хорошо объясняете )

  • @TheMrDenissko
    @TheMrDenissko 2 роки тому +1

    Большое спасибо!! Очень интересно.

  • @sloppyaerials4463
    @sloppyaerials4463 3 роки тому +2

    Спасибо, все доходчиво объяснено

  • @user-ve8jb1yw8d
    @user-ve8jb1yw8d 4 роки тому +4

    Спасибо за видео! Интересно продолжение темы.

  • @gremlingomelsky28
    @gremlingomelsky28 3 роки тому +2

    Спасибо! Супер, все наглядно и понятно!

  • @borkman6285
    @borkman6285 2 роки тому +1

    просто супер объяснение спасибо!

  • @Andrzej3935
    @Andrzej3935 2 роки тому +1

    Спасибо вам, добрый человек!

  • @iryna268
    @iryna268 4 роки тому +3

    Спасибо за видео. Все очень доступно объяснили.

  • @maximk0
    @maximk0 3 місяці тому

    Спасибо, видео помогло понять почему обход назвали "рекурсивным":) До этого видео было полное непонимание как раз в первую очередь из-за названия)

  • @Aticinsane
    @Aticinsane 2 роки тому +1

    Спасибо вам! Предельно понятно.

  • @dmytrobudym8655
    @dmytrobudym8655 3 роки тому +3

    Отличное объяснение) спасибо)

  • @anjelomanoranjan
    @anjelomanoranjan 3 місяці тому

    Серега, обожаю твои видео! Продолжай пожалуйста снимать обучающие туториалы по Java

  • @apatrisianislav7106
    @apatrisianislav7106 3 роки тому +2

    Как всегда все понятно, спасибо

  • @gulfstream1800
    @gulfstream1800 2 роки тому +1

    Классное видео. Спасибо!

  • @vitaliypovzner9178
    @vitaliypovzner9178 4 роки тому +7

    Спасибо за видео!Подписался на твой канал,отлично излагаешь информацию!

  • @alexeypashchenko
    @alexeypashchenko 2 роки тому +1

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

  • @ratmirsusanin5496
    @ratmirsusanin5496 3 роки тому +1

    Спасибо!Отличное видео!!!

  • @AntonRodriges
    @AntonRodriges 4 роки тому +3

    Спасибо! Очень познавательно!

  • @user-ez6ng5ze6z
    @user-ez6ng5ze6z 4 роки тому +2

    Нихуя, я не знаю как тут не материться. Все хорошо объясняешь, да еще и с картинками. Спасибо за ваши уроки

  • @ercefwxdx
    @ercefwxdx 3 роки тому +1

    Спасибо. Отличное видео

  • @user-ow7mh1zb2b
    @user-ow7mh1zb2b 4 роки тому +6

    Спасибо, хорошо объяснил)

  • @MC-RAY
    @MC-RAY 10 місяців тому

    Просто лучший🎉

  • @divergenny
    @divergenny 2 роки тому +1

    Благодарю за ваш труд

  • @roseline8831
    @roseline8831 3 роки тому +1

    спасибо за урок

  • @bxneslxrd2224
    @bxneslxrd2224 11 місяців тому

    спасибо за объяснение

  • @johannesbrown8853
    @johannesbrown8853 4 роки тому +3

    Супер!

  • @mobilafilm
    @mobilafilm Рік тому

    очень круто!

  • @kironpapon
    @kironpapon 4 роки тому +2

    чому так мало просмотров!?!?
    автору ставлю класс!

  • @artemshandrikov2278
    @artemshandrikov2278 3 роки тому +1

    Спасибо!

  • @BestBrilliantBoY
    @BestBrilliantBoY 2 роки тому

    Спасибо большое.

  • @Mastervmf
    @Mastervmf 3 роки тому

    Это лучшее видео

  • @Denis-wn1xr
    @Denis-wn1xr 2 роки тому

    спасибо!!

  • @BC-uj4nu
    @BC-uj4nu Рік тому

    Суперклассное объяснение, только произносите правильно: null - [нал], sum - [сам]. А то потом у англоязычных коллег ухи вянут.

  • @user-mx6uk6gi5e
    @user-mx6uk6gi5e 2 роки тому

    super!!!

  • @caffeinejavacode1475
    @caffeinejavacode1475 3 роки тому +3

    Спасибо! я так понял эта рекурсивная магий просисходит из за того что у нас поле того же типа что и класс ну и конструктор естественно принимает тот же тип. Правильно?

  • @vantonyan4217
    @vantonyan4217 3 роки тому

    класс

  • @SS-vq7lo
    @SS-vq7lo 4 роки тому +1

    Мужик ты Молодец, но можно я придерусь? Сейчас очень много блоггеров говорят “так же самое” и появилось много людей которые начали говорить так же, раньше никогда такого не слышал. Откуда взялось это выражение? Это же два разных слова которые не имеют ничего общего между собой. Может все таки “то же самое”? Если человек вещает для масс то он просто обязан говорить правильно. А за материал спасибо, самое главное что было показано в отладчике что происходит. Очень понятно

    • @TSAR_TOP
      @TSAR_TOP 3 роки тому +1

      нельзя

  • @DJCrush1000
    @DJCrush1000 Рік тому

    На 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())

  • @romanryaboshtan9270
    @romanryaboshtan9270 2 роки тому

    балансировка интересна

  • @temirlandivine3505
    @temirlandivine3505 Рік тому

    Примеры графов:
    Граф похожих на друг друга аниме, или фильмов или сериалов, или книг и т.д по мнению зрителей
    План в виде графа, есть цели, на пути которым есть задачи, и есть связи между целями, это значит одна задача ведет для двух целей.

  • @info_infoman
    @info_infoman Рік тому

    А в жава нет готового фремворка для деревьев? Типа кубернейта

  • @aleksejsigaj1373
    @aleksejsigaj1373 3 дні тому

    Дерево состоит из деревьев или из нод?

  • @automanautomation9845
    @automanautomation9845 2 роки тому

    Внимание глупый вопрос, а зачем class Tree сделали статическим? в итоге получили static class Tree, не совсем понял зачем вы так сделали.

    • @arhitutorials
      @arhitutorials  2 роки тому +2

      Чтобы подчеркнуть, что Tree - не внутренний класс класса Main и может работать независимо от него.

  • @naivais
    @naivais 4 роки тому +1

    название класса, вроде как, пишется с заглавной буквы?

    • @arhitutorials
      @arhitutorials  4 роки тому

      Да, вы правы. Написал и не заметил ошибки(

    • @naivais
      @naivais 4 роки тому

      @@arhitutorials странно что IDEA такое пропустила

    • @arhitutorials
      @arhitutorials  4 роки тому +2

      @@naivais это нормально. Синтаксисом Java не запрещено называть классы с маленькой буквы. Это просто такое общепринятое соглашение.
      Кстати в IDEA можно настроить code guidelines как надо, и тогда такие вещи будут подчеркиваться. Но у меня чистая IDEA без кастомных настроек, по этому пропускает.

  • @rednex2013
    @rednex2013 Рік тому

    Как посчитать количество листьев в таком дереве?

    • @partiec6065
      @partiec6065 8 місяців тому

      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-kj3ec6sv1p
    @user-kj3ec6sv1p 4 роки тому +2

    суть понятна, построение понятно, но не компилируется IDEA рисует ошибки((((((

    • @user-kj3ec6sv1p
      @user-kj3ec6sv1p 4 роки тому

      всё))))) нашел ошибку, не сделал класс статическим

    • @arhitutorials
      @arhitutorials  4 роки тому

      @@user-kj3ec6sv1p хорошо, а то я уже было запустил IDEA, собрался разбираться что не так))

  • @BookwormYevgen
    @BookwormYevgen 3 роки тому

    Построением дерева занимаются специальные алгоритмы.... Так это же как раз и самое интересное!!!
    И зачем отдельно конструктор для листьев? Разве нельзя использовать тот же конструктор, передавая в качестве потомков null??

    • @arhitutorials
      @arhitutorials  3 роки тому +1

      А какой смысл экономить на конструкторах? Наоборот, на каждый случай использования нужно сделать по конструктору) В нашем случае в коде будет сразу видно где лист создается, а где полноценный узел. Это же хорошо?

    • @BookwormYevgen
      @BookwormYevgen 3 роки тому

      @@arhitutorials Не могу сказать, хорошо это или плохо, я не настолько обладаю опытом, просто мне показалось избыточным. И с точки зрения разделения ответственности и декомпозиции, получение строковых последовательностей для отдельных символов(getCodeForChar) в составе класса, описывающего узел, мне показалось чуждым.

  • @sLasHee85
    @sLasHee85 2 роки тому

    Странный метод main, в котором в качестве аргумента принимается массив с наименованием params. Вcегда считал именование args неизменным для JVM

    • @arhitutorials
      @arhitutorials  2 роки тому +1

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

  • @user-hw7cc2jv2w
    @user-hw7cc2jv2w 2 роки тому

    "На практике этим заниматься не надо, это делает специальный алгоритм", а обучение не для практики? Почему тогда не показать сразу в сравнении, как это делается на практике?

  • @BobrKurvva
    @BobrKurvva 6 днів тому

    спасибо

  • @revolteen
    @revolteen 3 роки тому +1

    Спасибо! Очень познавательно!