Найти в Дзене
Не рекурсией единой. Решаем задачи с деревьями, используя очередь⁠⁠
В предыдущих частях мы познакомились с рекурсивным подходом решения деревьев. В этой части мы воспользуемся стэком. Рекурсия далека от идеала. Рекурсия чаще всего используется только во время собеседований (а этот цикл статей именно направлен на подгтовку к собеседования). В промышленной разработке её чаще избегают изза потенциальных следующих потенциальных проблем: Очеред (или Стэк) - популярный подход в решении задач на деревья. Во многом, задача на деревья определяется тем, как мы можем проитерироваться по всем узлам...
1 год назад
Проверяем является ли дерево бинарным деревом поиска
Продолжаем цикл статей про деревья. Основной целью этого цикла является практика и подготовка к собеседованиям а не промышленные решения (о них я расскажу в следующих частях). В этой части мы еще раз воспользуемся рекурсией для решения одной популярной задачи. Задача - проверить является ли дерево ли бинарным деревом поиска? Для начала определимся что такое бинарное дерево поиска: Такое дерево называется Бинарным Деревом Поиска (Binary Search Tree). Но не стоит путать его с балансированым бинарным деревом...
1 год назад
Продолжаем решать деревья. Инвертирование дерева - одна из самых популярных задач⁠⁠
Эта часть является продолжением цикла лекций про деревья. В этой части мы снова воспользуемся рекурсией чтобы инвертировать дерево. Задача довольно популярна и по сложности является довольно простой. Допустим у нас есть дерево Допустим у нас есть дерево ниже: Инвертируем дерево Целью является инвертировать дерево. Те для каждого узла нужно поменять местами его левый и правый наследники...
1 год назад
Рекурсивно обходим деревья. Прямой, Центрированый, Обратный обходы⁠⁠
В прошлой части мы ознакомились с базовыми понятиями деревьев и обошли одно дерево рекурсией. В данной статье мы еще раз рассмотрим понятие рекурсии и посмотрим как небольшие во время итерации могут повлиять на результат. В данной части мы сфокусируемся на итерации, а в следующе мы уже будем использовать эти подходы для решения задач. Обход деревьев часто ощущается как лабиринт Давайте рассмотрим уже знакомое дерево: Прямой обход дерева (Префиксный) - NLR В прошло части мы уже итерировались по дереву рекурсивно...
1 год назад
Что такое деревья и как с ними работать. Используем Java⁠⁠
Деревья являются одним из самых пугающих вещей в разработке. Еще хуже дело обстоит, когда программист встречает задачу, связанную с деревьями, во время собеседования. В этой статье я постараюсь минимизировать боль, связанную с этой темой. Деревья бывают разные. Мы рассмотрим двоичное сбалансированное. В данной статье мы рассмотрим наиболее популярные — двоичные сбалансированные (красно-черные) деревья. Пример бинарного дерева. У каждого листка может быть не более двух наследников. Основные понятия...
1 год назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала