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
Какое же простое объяснение алгоритма! Решил пересмотреть весь ваш плейлист по алгоритмам.
Забавно, вижу ваши комментарии и под лекциями в JavaRush =)
Спасибо за урок. Перевел 10₽ за объяснение. Призываю всех делать также. Нужно поддерживать хороших авторов и не скупиться. Так мы станем жить лучше!
Спасибо, получил.
Автору ОГРОМНЫЙ респект. Очень грамотно объясняет. С предысторией, примерами и пояснениями зачем и почему. Однозначно подписка. Спасибо!
Офигеть это нечего не сказать, в универе вообще тему не понял,от слова совсем, посмотрев это видео все стало намного понятнее, Спасибо Огромное автору!
Мужик, ты красавчик! До этого видео пробовал читать другие ресурсы - мало что понял. А из этого видео сразу все стало ясно. Спасибо! Все таки умение объяснять доступно - очень ценный навык.
При изучении ранее пытался разобраться с деревьями по всяким заумных хабрам-швабрам, потратил время. Здесь все предельно ясно и понятно! Самый понятный канал по изучению - коротко, понятно и с простыми примерами.
Просто, ты - идиот! 🎉
Вот правильно говорят, когда человек понимает он может доступно объяснить, спасибо за уроки!
Объяснения лучше, чем на дорогущих курсах...Спасибо Вам большое! Пошла смотреть другие Ваши ролики! Лайк
Сергей, спасибо большое. Лучшего объяснения я не видел, это большое подспорье в изучении структуры данных.
Всё наглядно и понятно! Спасибо за видео! Надеюсь на продолжение темы.:)
Комметрарий в поддержку.
По сути: Хотелось бы уроки и по другим базовым алгоритмам. Особенно по тем, что дают на тестах в Leetcode и Codility. Уроки хотелось бы на Java. Так же не скупитесь на схемы объясняющие ход выполнения программы. Спасибо.
Очень четкое и понятное обьяснение без лишней воды. Спасибо за науку.
Сергей, огромное спасибо за Ваш труд. Посмотрел уже не один Ваш ролик. Объяснения понятные, с отличными примерами кода, схемы и картинки здорово дополняют материал! Коллеги-обучающиеся, давайте поддержим канал по ссылке под видео.
Спасибо!
Спасибо большое! Очень помогли решить такую задачу! Вы единственный кто хорошо объясняет Java! Я вам очень благодарен!
тема интересная, очень нравится как вы все детально объясняете. Спасибо)
очень помогло, Спасибо, Сергей!
Прекрасное объяснение! Большое спасибо, Сергей, за ваш труд! Столкнулся с задачей на курсе изучения Java. Тему предварительно не рассказывали, рекурсию не объясняли. Про рекурсию я ранее слышал, но не совсем понимал прикладное значение. Ваше видео - доступнее всего раскрывает тему бинарных деревьев из всех материалов, что я встретил на просторах рунета.
Очень доходчиво. Просто о сложном. У вас талант. Спасибо.👍
Спасибо вам большое, с третьего раза все понятно стало. В общем пока сам не напишешь не подебажишь не разберешься
Отличное видео, лушче пока не видел, плюс понятно как работает компилятор в данном случае
Большое спасибо очень крутое объяснение как считать глубину
Огромное спасибо, Сергей! Было бы интересно увидеть больше роликов про деревья
Спасибо! Ваши ролики часто выручают в, казалось бы, безвыходных ситуациях :)
Большое спасибо, очень хорошо все объяснил. Пожалуй лучшее видео на эту тему из всех, что пересмотрел.
Спасибо, все доходчиво объяснено
Потрясно, спасибо за понятное объяснение 🔥
Спасибо, благодаря Вашему видео получилось решить задачу)
Супер объяснение! Спасибо! :)
Спасибо. Отличная подача материала!
просто супер объяснение спасибо!
Большое спасибо!! Очень интересно.
Спасибо за видео!
Спасибо, очень хорошо объясняете )
спасибо за видео! очень полезная информация, изложенная подробно и озвученная приятно. Ждем продолжения!
Спасибо, видео помогло понять почему обход назвали "рекурсивным":) До этого видео было полное непонимание как раз в первую очередь из-за названия)
Спасибо вам, добрый человек!
Спасибо вам! Предельно понятно.
Спасибо! Супер, все наглядно и понятно!
Отличное объяснение) спасибо)
Спасибо за видео! Интересно продолжение темы.
Спасибо за видео. Все очень доступно объяснили.
Как всегда все понятно, спасибо
Отличное видео. Спасибо за доступное и понятное объяснение!
Классное видео. Спасибо!
Серега, обожаю твои видео! Продолжай пожалуйста снимать обучающие туториалы по Java
Спасибо!Отличное видео!!!
спасибо за урок
Спасибо! Очень познавательно!
спасибо за объяснение
Просто лучший🎉
Спасибо. Отличное видео
Спасибо за видео!Подписался на твой канал,отлично излагаешь информацию!
Спасибо, хорошо объяснил)
Нихуя, я не знаю как тут не материться. Все хорошо объясняешь, да еще и с картинками. Спасибо за ваши уроки
Благодарю за ваш труд
Супер!
Спасибо!
Спасибо большое.
чому так мало просмотров!?!?
автору ставлю класс!
очень круто!
Суперклассное объяснение, только произносите правильно: null - [нал], sum - [сам]. А то потом у англоязычных коллег ухи вянут.
Мужик ты Молодец, но можно я придерусь? Сейчас очень много блоггеров говорят “так же самое” и появилось много людей которые начали говорить так же, раньше никогда такого не слышал. Откуда взялось это выражение? Это же два разных слова которые не имеют ничего общего между собой. Может все таки “то же самое”? Если человек вещает для масс то он просто обязан говорить правильно. А за материал спасибо, самое главное что было показано в отладчике что происходит. Очень понятно
нельзя
Это лучшее видео
super!!!
спасибо!!
На 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())
Примеры графов:
Граф похожих на друг друга аниме, или фильмов или сериалов, или книг и т.д по мнению зрителей
План в виде графа, есть цели, на пути которым есть задачи, и есть связи между целями, это значит одна задача ведет для двух целей.
Спасибо! я так понял эта рекурсивная магий просисходит из за того что у нас поле того же типа что и класс ну и конструктор естественно принимает тот же тип. Правильно?
балансировка интересна
класс
А в жава нет готового фремворка для деревьев? Типа кубернейта
суть понятна, построение понятно, но не компилируется IDEA рисует ошибки((((((
всё))))) нашел ошибку, не сделал класс статическим
@@kalyan116rus хорошо, а то я уже было запустил IDEA, собрался разбираться что не так))
Странный метод main, в котором в качестве аргумента принимается массив с наименованием params. Вcегда считал именование args неизменным для JVM
Нужно чтоб сигнатура метода была правильная, а как при этом называются параметры, значения не имеет.
Дерево состоит из деревьев или из нод?
Внимание глупый вопрос, а зачем class Tree сделали статическим? в итоге получили static class Tree, не совсем понял зачем вы так сделали.
Чтобы подчеркнуть, что Tree - не внутренний класс класса Main и может работать независимо от него.
Как посчитать количество листьев в таком дереве?
int sum(){
int sum = 1; // было int sum = value;
if (left != null){
sum += left.sum();
}
if (right != null){
sum += right.sum();
}
return sum;
}
название класса, вроде как, пишется с заглавной буквы?
Да, вы правы. Написал и не заметил ошибки(
@@arhitutorials странно что IDEA такое пропустила
@@naivais это нормально. Синтаксисом Java не запрещено называть классы с маленькой буквы. Это просто такое общепринятое соглашение.
Кстати в IDEA можно настроить code guidelines как надо, и тогда такие вещи будут подчеркиваться. Но у меня чистая IDEA без кастомных настроек, по этому пропускает.
Построением дерева занимаются специальные алгоритмы.... Так это же как раз и самое интересное!!!
И зачем отдельно конструктор для листьев? Разве нельзя использовать тот же конструктор, передавая в качестве потомков null??
А какой смысл экономить на конструкторах? Наоборот, на каждый случай использования нужно сделать по конструктору) В нашем случае в коде будет сразу видно где лист создается, а где полноценный узел. Это же хорошо?
@@arhitutorials Не могу сказать, хорошо это или плохо, я не настолько обладаю опытом, просто мне показалось избыточным. И с точки зрения разделения ответственности и декомпозиции, получение строковых последовательностей для отдельных символов(getCodeForChar) в составе класса, описывающего узел, мне показалось чуждым.
скажите пожалуйста, что это за IDE ?
Это IntelliJ IDEA
"На практике этим заниматься не надо, это делает специальный алгоритм", а обучение не для практики? Почему тогда не показать сразу в сравнении, как это делается на практике?
спасибо
Спасибо! Очень познавательно!