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

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ส.ค. 2024
  • Исходный код:
    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

ความคิดเห็น • 98

  • @IIJustIIsicariusII
    @IIJustIIsicariusII 3 ปีที่แล้ว +40

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

    • @_Latcarf_
      @_Latcarf_ ปีที่แล้ว +2

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

  • @hgfdtj3151
    @hgfdtj3151 2 ปีที่แล้ว +1

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

    • @arhitutorials
      @arhitutorials  2 ปีที่แล้ว +1

      Спасибо, получил.

  • @sasharobson
    @sasharobson 3 ปีที่แล้ว +2

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

  • @mrslavik2104
    @mrslavik2104 2 ปีที่แล้ว +2

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

  • @user-bw8qw3fz1f
    @user-bw8qw3fz1f 2 ปีที่แล้ว +5

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

  • @s.k.6563
    @s.k.6563 4 ปีที่แล้ว +4

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

    • @yuriytheone
      @yuriytheone ปีที่แล้ว

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

  • @automanautomation9845
    @automanautomation9845 3 ปีที่แล้ว +1

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

  • @user-vp2cz6mu2y
    @user-vp2cz6mu2y ปีที่แล้ว +1

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

  • @dharbemasadjibwe9826
    @dharbemasadjibwe9826 2 ปีที่แล้ว +1

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

  • @d.mertsalov
    @d.mertsalov 5 ปีที่แล้ว +25

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

  • @dimitribolt6006
    @dimitribolt6006 2 ปีที่แล้ว +1

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

  • @mehaletz
    @mehaletz 3 ปีที่แล้ว +1

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

  • @user-ls7wo3fl4u
    @user-ls7wo3fl4u 3 ปีที่แล้ว +11

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

  • @user-rl1hs3jf7l
    @user-rl1hs3jf7l 4 ปีที่แล้ว +3

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

  • @WakeUp_Lia
    @WakeUp_Lia 3 ปีที่แล้ว +3

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

  • @kafychannel
    @kafychannel ปีที่แล้ว +2

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

  • @antonprotasov941
    @antonprotasov941 2 ปีที่แล้ว +1

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

  • @Euraks
    @Euraks ปีที่แล้ว +1

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

  • @ascar66
    @ascar66 3 ปีที่แล้ว +2

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

  • @cwnik
    @cwnik 4 ปีที่แล้ว +4

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

  • @user-fj7on8le9g
    @user-fj7on8le9g ปีที่แล้ว +1

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

  • @mistrebrown7642
    @mistrebrown7642 4 ปีที่แล้ว +7

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

  • @partiec6065
    @partiec6065 11 หลายเดือนก่อน

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

  • @user-bu1jo5kn4x
    @user-bu1jo5kn4x 5 ปีที่แล้ว +9

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

  • @sloppyaerials4463
    @sloppyaerials4463 3 ปีที่แล้ว +2

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

  • @NikolayMishin
    @NikolayMishin 11 หลายเดือนก่อน +1

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

  • @user-rg7rn6jz5n
    @user-rg7rn6jz5n 4 ปีที่แล้ว +4

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

  • @user-zl2kb2ze3m
    @user-zl2kb2ze3m ปีที่แล้ว +1

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

  • @user-mm6pl5re8l
    @user-mm6pl5re8l 3 ปีที่แล้ว +4

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

  • @borkman6285
    @borkman6285 2 ปีที่แล้ว +1

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

  • @TheMrDenissko
    @TheMrDenissko 2 ปีที่แล้ว +1

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

  • @alexeypashchenko
    @alexeypashchenko 2 ปีที่แล้ว +1

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

  • @vladimir1992XPrg
    @vladimir1992XPrg 2 ปีที่แล้ว +1

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

  • @TheSollne4naja
    @TheSollne4naja 5 ปีที่แล้ว +5

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

  • @maximk0
    @maximk0 5 หลายเดือนก่อน

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

  • @Andrzej3935
    @Andrzej3935 3 ปีที่แล้ว +1

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

  • @Aticinsane
    @Aticinsane 2 ปีที่แล้ว +1

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

  • @gremlingomelsky28
    @gremlingomelsky28 3 ปีที่แล้ว +2

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

  • @dmytrobudym8655
    @dmytrobudym8655 3 ปีที่แล้ว +3

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

  • @user-ve8jb1yw8d
    @user-ve8jb1yw8d 4 ปีที่แล้ว +4

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

  • @iryna268
    @iryna268 4 ปีที่แล้ว +3

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

  • @apatrisianislav7106
    @apatrisianislav7106 3 ปีที่แล้ว +2

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

  • @user-lk8n0fgjk
    @user-lk8n0fgjk 3 หลายเดือนก่อน

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

  • @gulfstream1800
    @gulfstream1800 2 ปีที่แล้ว +1

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

  • @anjelomanoranjan
    @anjelomanoranjan 5 หลายเดือนก่อน

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

  • @ratmirsusanin5496
    @ratmirsusanin5496 3 ปีที่แล้ว +1

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

  • @roseline8831
    @roseline8831 3 ปีที่แล้ว +1

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

  • @AntonRodriges
    @AntonRodriges 4 ปีที่แล้ว +3

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

  • @bxneslxrd2224
    @bxneslxrd2224 ปีที่แล้ว

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

  • @MC-RAY
    @MC-RAY ปีที่แล้ว

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

  • @ercefwxdx
    @ercefwxdx 3 ปีที่แล้ว +1

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

  • @vitaliypovzner9178
    @vitaliypovzner9178 5 ปีที่แล้ว +7

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

  • @user-ow7mh1zb2b
    @user-ow7mh1zb2b 4 ปีที่แล้ว +6

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

  • @user-ez6ng5ze6z
    @user-ez6ng5ze6z 5 ปีที่แล้ว +2

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

  • @divergenny
    @divergenny 3 ปีที่แล้ว +1

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

  • @johannesbrown8853
    @johannesbrown8853 5 ปีที่แล้ว +3

    Супер!

  • @artemshandrikov2278
    @artemshandrikov2278 3 ปีที่แล้ว +1

    Спасибо!

  • @BestBrilliantBoY
    @BestBrilliantBoY 2 ปีที่แล้ว

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

  • @kironpapon
    @kironpapon 4 ปีที่แล้ว +2

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

  • @mobilafilm
    @mobilafilm ปีที่แล้ว

    очень круто!

  • @BC-uj4nu
    @BC-uj4nu 2 ปีที่แล้ว

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

  • @SS-vq7lo
    @SS-vq7lo 4 ปีที่แล้ว +1

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

    • @TSAR_TOP
      @TSAR_TOP 3 ปีที่แล้ว +1

      нельзя

  • @Mastervmf
    @Mastervmf 3 ปีที่แล้ว

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

  • @user-mx6uk6gi5e
    @user-mx6uk6gi5e 3 ปีที่แล้ว

    super!!!

  • @Denis-wn1xr
    @Denis-wn1xr 3 ปีที่แล้ว

    спасибо!!

  • @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())

  • @temirlandivine3505
    @temirlandivine3505 2 ปีที่แล้ว

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

  • @caffeinejavacode1475
    @caffeinejavacode1475 4 ปีที่แล้ว +3

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

  • @romanryaboshtan9270
    @romanryaboshtan9270 2 ปีที่แล้ว

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

  • @vantonyan4217
    @vantonyan4217 3 ปีที่แล้ว

    класс

  • @info_infoman
    @info_infoman ปีที่แล้ว

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

  • @kalyan116rus
    @kalyan116rus 4 ปีที่แล้ว +2

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

    • @kalyan116rus
      @kalyan116rus 4 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  4 ปีที่แล้ว

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

  • @sLasHee85
    @sLasHee85 2 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  2 ปีที่แล้ว +1

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

  • @aleksejsigaj1373
    @aleksejsigaj1373 2 หลายเดือนก่อน

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

  • @automanautomation9845
    @automanautomation9845 3 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  3 ปีที่แล้ว +2

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

  • @rednex2013
    @rednex2013 ปีที่แล้ว

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

    • @partiec6065
      @partiec6065 11 หลายเดือนก่อน

      int sum(){
      int sum = 1; // было int sum = value;
      if (left != null){
      sum += left.sum();
      }
      if (right != null){
      sum += right.sum();
      }
      return sum;
      }

  • @naivais
    @naivais 4 ปีที่แล้ว +1

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

    • @arhitutorials
      @arhitutorials  4 ปีที่แล้ว

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

    • @naivais
      @naivais 4 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  4 ปีที่แล้ว +2

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

  • @BookwormYevgen
    @BookwormYevgen 3 ปีที่แล้ว

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

    • @arhitutorials
      @arhitutorials  3 ปีที่แล้ว +1

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

    • @BookwormYevgen
      @BookwormYevgen 3 ปีที่แล้ว

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

  • @user-hx5vf6ve2t
    @user-hx5vf6ve2t 3 ปีที่แล้ว

    скажите пожалуйста, что это за IDE ?

  • @Scruner-7
    @Scruner-7 3 ปีที่แล้ว

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

  • @BobrKurvva
    @BobrKurvva 2 หลายเดือนก่อน

    спасибо

  • @revolteen
    @revolteen 3 ปีที่แล้ว +1

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