Дерево. Предыдущие вершины 1. Дерево. Предыдущие вершины Дерево в информатике похоже на карту с ветками: есть корень и связи между вершинами. Сегодня разберём, как находить предыдущие вершины — то есть «родителя» каждой вершины. 2. Где мы видим деревья каждый день Деревья встречаются в программах, в папках на компьютере и в разных схемах. Там показано, кто от кого зависит, и связи идут без кругов. Представим простую задачу для третьего класса: нарисовать дерево и найти для одной вершины ту, что стоит выше. Честно говоря, у многих сначала возникает ощущение, что дерево «похоже на паутину». Но в дереве нет замкнутых дорожек: если идти по связи, путь не возвращается обратно. Именно поэтому поиск предыдущей вершины становится понятным и тренируемым навыком. 3. Быстро запомним главные слова Чтобы быстро ориентироваться, удобно держать в голове несколько ключевых слов. Тогда дерево перестаёт быть «картинкой» и превращается в понятную систему. Корень — самая верхняя вершина, с которой начинается всё. Родитель — это предыдущая вершина для данной вершины. Потомки — вершины ниже по дереву, которые продолжают ветку. Листья — вершины без потомков, обычно в самом низу. Когда эти слова закрепляются, дальше становится легче: достаточно научиться «смотреть на шаг вверх» или «на шаг вниз». 4. Корень дерева Корень — это самая верхняя вершина дерева. У корня нет предыдущей вершины, потому что «над ним» ничего нет. От корня начинаются все ветви и все связи в рисунке — как старт у игры. Замечательная мысль для памяти: корень не нужно «разыскивать». Он просто есть, и от него расходятся все пути вниз. На практике это помогает в алгоритмах: стартовая точка всегда фиксирована. На картинке корень обычно выделяют отдельно, чтобы его легко было узнать. В маленьком дереве корень может иметь двух или трёх детей. У каждого ребёнка потом может быть своё продолжение, будто у каждой веточки есть собственная история. 5. Предыдущая вершина Предыдущая вершина — это та, от которой связь идёт вниз к другой вершине. Её ещё называют родителем. Важно запомнить простое правило: для каждой вершины, кроме корня, предыдущая вершина только одна. То есть у каждой «книги» в этом дереве есть ровно один «том-папа» наверху — без вариантов и без двойных дорог. Для корня это исключение. Если вершина стоит ниже, нужно посмотреть вверх на один шаг. Там и находится её предыдущая вершина. Такой шаг помогает не перепутать направления и правильно читать дерево. Работает ещё одно правило: корень — исключение. У корня нет родителя, потому что у него нет предыдущей вершины. Поэтому искать вверх для корня не требуется — это конец цепочки. 6. Как найти предыдущую вершину Теперь соберём эти правила в маленький «маршрут». Представим, что дерево — как лес, а задача — найти, кто стоит ближе всего сверху. Двигаемся вверх по одному ребру и проверяем, не корень ли это. Если корень — значит, предыдущей вершины нет. Если не корень — та вершина, куда привела проверка по одному шагу вверх, и есть предыдущая. Логика этого пути проста: мы не прыгаем через вершины и не рассматриваем сразу всё вверх целиком. Один ребро — один шаг. Такой подход как в игре: сделал ход — и сразу видишь, где результат. И именно поэтому поиск получается точным: у каждой вершины есть ближайший предок, а у корня — нет предка вообще. 7. Потомки и предки Потомки — это вершины, которые расположены ниже. Они показывают продолжение дерева вниз. Чем дальше вниз, тем «дальше» потомок от текущей вершины — как продолжение истории. Предки находятся выше. Они помогают понять, откуда вершина появилась. Предыдущая вершина — ближайший предок: если подняться на один шаг вверх, получим именно его. Если подняться ещё выше, появятся более дальние предки. Удобно думать о дереве как о семье: наверху — старшие, внизу — младшие. Так легче запомнить отношения между вершинами и не спутать «кто от кого». Следующий шаг — научиться различать вершины по их положению в дереве: где конец пути, а где продолжается веточка. 8. Три картинки для воображения Чтобы представлять дерево не только по буквам, полезны «картинки в голове». Они помогают воображению работать на запоминание. Первая картинка: дорожка от корня. В центре — корень, от него отходят две-три тропинки. Каждая тропинка ведёт к новой вершине, и на каждой остановке можно спросить: «А кто стоит прямо передо мной сверху?» Вторая картинка: лестница вверх. Если вершина внизу, сверху всегда есть ближайший предок. Это как шаг по ступеньке: один шаг — и узнаём родителя, а следующий шаг — дальше по цепочке. Третья картинка: веточка с кончиками. Листья похожи на кончики маленьких веток. Там путь заканчивается: вниз продолжения нет, но вверх всегда можно подняться к предкам. Когда такие образы закрепляются, определять предыдущие вершины становится почти привычкой: взгляд автоматически ищет ступеньку над нужной точкой. 9. Листья дерева Лист — это вершина без потомков. Обычно лист находится в самом низу дерева. Это конец веточки: дальше вниз от него уже не идёт продолжение. У многих именно на листьях возникает вопрос: «раз нет потомков, значит ли это, что наверху тоже пусто?» Нет. У листа всё равно есть предыдущая вершина, если только лист не является корнем. Значит, даже у «кончика» есть родитель, просто продолжения вниз нет. Лист всегда что-то «наследует» вверх. Листья похожи на кончики веток в природе: к ним можно добраться, поднимаясь от них по предыдущим вершинам. Если лист не корень, то путь вверх обязательно продолжается до корня. Итак, в дереве всегда есть два направления чтения: вверх к предкам и вниз к потомкам. Теперь разберём, как дерево можно «разложить по уровням». 10. Уровни дерева Дерево удобно понимать не только как картинку, но и как набор уровней. Тогда вершины будто раскладываются по этажам. На верхнем уровне находится корень. От него вниз идут вершины следующего уровня — это дети корня. Дальше каждый следующий уровень получается так: вершины ниже связаны со своими ближайшими предками сверху. Если уровни представить по порядку, поиск предыдущей вершины становится проще: предыдущая всегда на уровне выше и связана с текущей вершиной одним шагом вверх. Так дерево перестаёт быть «сложным рисунком» и превращается в лестницу: один уровень — один шаг к корню. 11. Связи в дереве: кто к кому «приходит» Есть ещё один способ смотреть на дерево — через направление связей. Дерево растёт вниз: из корня идут дети, а у каждого ребёнка есть ровно одна предыдущая вершина. Поэтому путь вверх всегда возвращает к одному родителю. Представим это как правила движения. Если идти по связи вниз, всё расширяется: появляются новые вершины, и ветка становится длиннее. Если же двигаться вверх, мы идём к более «старшим» вершинам. Идея «ровно одной предыдущей вершины» делает дерево аккуратным: у каждой вершины есть понятная история, откуда она появилась. Никаких случайных вторых родителей — только один ближайший шаг к предку. На практике это важно и в коде, и в задачах по логике. Когда правила движения известны, дерево перестаёт путать и начинает работать на понимание. 12. Пример маленького дерева В примере у корня A есть дети B и C. У B появляются два ребёнка: D и E. Так удобно учиться: видны уровни и можно шагать взглядом вверх по линиям к корню. Предыдущая вершина для D — это B. Предыдущая вершина для B — это A. Это хорошая тренировка на «один шаг вверх»: D подняли — сразу нашли B, B подняли — сразу нашли A. Корень можно выделить одним цветом, детей — другим, а листья, например D и E, — третьим. Тогда в голове появляется «цветовая подсказка»: где вершина сверху, где середина, где конец веточки. Следующий вопрос естественный: почему у каждой вершины — только одна предыдущая. Это ключевая причина, почему путь к корню всегда понятен. 13. Почему у вершины только одна предыдущая У каждой вершины, кроме корня, есть ровно одна предыдущая. Благодаря этому у любой вершины получается один понятный путь к корню. Это свойство делает деревья удобными: если у вершины один предок, то и история получается без споров — один ближайший шаг вверх всегда верный. Можно представить, что дерево — как книга семейных связей, где у каждого есть только один «родительский» пункт, а у корня страницы не предшествуют, потому что это начало. Поэтому к корню ведёт только один ближайший шаг вверх без «двойных маршрутов». 14. Как не перепутать направление Главный секрет работы с деревом — не перепутать направления. Вниз по дереву идут потомки: туда, где линии расходятся и появляются новые вершины. Там растут веточки, и дальше всё «уводит» от корня. Вверх идут предки: вы возвращаетесь к более старшим вершинам. Предыдущая вершина всегда находится на один шаг ближе к корню, поэтому движение вверх — это «шаг назад». Если вершина стоит выше на рисунке, то это часто и есть её предыдущая. Проверяйте связь по ребру: есть линия наверх — значит, там предок. Не угадывайте глазами без линии: опирайтесь на соединение. Полезное правило для памяти: вверх — к старшему, вниз — к младшим. Так легче находить родителей и не путать, где «кто кого». 15. Ошибка с корнем У корня нет предыдущей вершины. Это частая ошибка в заданиях: дети пытаются найти «предка над корнем», но над ним ничего нет. Корень — это начало всего дерева. На рисунках корень часто показывают отдельно, без линии сверху. Так проще увидеть, что у него нет вершины-предка и не нужно искать связь «в обратную сторону». Если возникает желание продолжить поиск вверх, стоит сделать паузу и свериться с правилом: корень — исключение. Его задача — быть стартом для всех ветвей. Так заканчивается наше путешествие по предыдущим вершинам: корень задаёт направление, а один шаг вверх всегда помогает найти родителя там, где это возможно. 16. Проверка ответа: шаг к предыдущей вершине Когда дерево уже нарисовано, иногда хочется проверить: а правильно ли соединены вершины? В таком «контроле» помогает простой алгоритм. Сначала нужно определить, является ли вершина корнем. Если нет — мы делаем один шаг вверх по одному ребру. Представим, что вершина далеко от корня. Это как подняться по лестнице: нельзя перескочить через ступеньки. Каждый подъём показывает только одну предыдущую вершину. Так проверка превращается в понятный маршрут: от точки к точке, пока путь не упрётся в корень. Можно вспомнить, как похожий принцип используют в задачах на семейные связи: у человека есть родители, и чтобы найти «следующий уровень назад», шаг делается строго один. В деревьях то же самое — только вместо слов «родители» работают ребра. Переход к следующему шагу задаёт мысль: если корня ещё не достигли, продолжаем движение вверх, пока алгоритм не подтвердит конечную точку. 17. Где полезно это правило Это правило особенно полезно в тех местах, где нужно находить «предков» и проверять цепочки связей. Во‑первых, в задачах про родословные: чтобы понять, кто чей родитель, важно идти по одному звену. Во‑вторых, в школьных учебных заданиях по схемам и классификациям: когда элемент дерева относится к более общей группе, путь назад помогает быстро понять, откуда он появился. В‑третьих, в компьютерных задачах. Многие алгоритмы поиска и обхода деревьев используют идею «одно ребро — один шаг». Например, при проверке правильности переходов в структурах данных проверяется, что у каждой вершины корректный родитель. 18. Задача с несколькими шагами Представим ситуацию, где вершина находится глубоко в дереве. Тогда к корню поднимаются по одному ребру за раз — словно медленно возвращаются по карте. Например, от вершины H переходят к F, затем к E, затем к A. Так соединены вершины на рисунке, и маршрут становится читаемым. Важно запомнить: перескакивать через уровни нельзя. Каждый подъём показывает ровно одну предыдущую вершину. Поэтому движения вверх похожи на маленькие ступеньки — они ведут обратно к корню шаг за шагом. Если попытаться «прыгнуть» сразу на верх, получится ошибка: пропадут промежуточные связи, а дерево перестанет быть точной картой отношений. У таких задач есть приятная особенность: когда сделать всё по правилам, итог выглядит логично, будто пазл наконец сложился. Дальше станет ещё проще, потому что мы сформулируем главное ограничение, которое делает дерево понятным. 19. Главное правило Главное правило звучит очень просто и при этом работает почти во всех деревьях: у каждой вершины, кроме корня, есть ровно одна предыдущая вершина. Это правило — основа всего, что мы делаем с деревьями: оно задаёт порядок и исключает «путаницу» в родственных связях. Почему это так важно? Потому что если у вершины был бы не один, а два родителя, дерево превращалось бы в другую структуру — с более сложными правилами. А наше «дерево-компас» как раз надёжно, потому что у каждого шага назад есть один конкретный вариант. Корень же — особенный. У корня предыдущей вершины нет, потому что он стоит самым первым. Он как «стартовая точка»: над ним ничего не растёт. В классическом представлении деревьев корень — это начало направления, а стрелки ребер (логически) ведут от него к потомкам. Если помнить это правило, становится легче читать дерево: проще находить родителей, понимать траекторию к корню и быстрее замечать ошибки. Тогда схемы перестают казаться запутанными и становятся ясными, как дорожка в парке, где у каждого поворота есть своё точное место. 20. Итог: читаем дерево сверху и снизу Дерево состоит из вершин и ребер. Корень начинает дерево, а предыдущая вершина показывает шаг вверх. У каждой вершины, кроме корня, только один родитель, поэтому путь к корню легко найти. Остаётся только привычка: читать сверху вниз — чтобы понимать, где новые веточки появляются, и снизу вверх — чтобы проверять, откуда вершина пришла. Так дерево становится не загадкой, а понятным маршрутом: стоит сделать шаг, и следующий шаг уже логичен. Источники Ахо А. В., Хопкрофт Дж. Э., Ульман Дж. Д. Структуры данных и алгоритмы. М.: Мир, 1979. Кнут Д. Искусство программирования. Т. 1: Основные алгоритмы. М.: Вильямс, 2015. Материал урока по деревьям (определение дерева и «предыдущей вершины»). Седжвик Р. Фундаментальные алгоритмы на C++. М.: Лаборатория знаний, 2017. Кнут Д. Искусство программирования. Том 1. Основные алгоритмы. М.: Вильямс, 2016. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. М.: Вильямс, 2021. Сарафанов Ю. Н., Суслов В. П. Дискретная математика для школьников. М.: Просвещение, 2019. ГОСТ Р 7.0.5–2008. Система стандартов по информации, библиотечному и издательскому делу. Библиографическая ссылка. Общие требования и правила составления.