Популярное

Музыка Кино и Анимация Автомобили Животные Спорт Путешествия Игры Юмор

Интересные видео

2025 Сериалы Трейлеры Новости Как сделать Видеоуроки Diy своими руками

Топ запросов

смотреть а4 schoolboy runaway турецкий сериал смотреть мультфильмы эдисон
dTub
Скачать

Наименьший общий предок между двумя узлами двоичного дерева (рекурсивный подход)

Автор: Back To Back SWE

Загружено: 2019-04-02

Просмотров: 86440

Описание:

Бесплатный 5-дневный мини-курс: https://backtobackswe.com
Попробуйте нашу полную платформу: https://backtobackswe.com/pricing
📹 Интуитивно понятные видеообъяснения
🏃 Запускайте код по мере обучения
💾 Сохраняйте прогресс
❓Новые, ранее не рассматривавшиеся вопросы
🔎 Получить все решения

Вопрос: Имея корень двоичного дерева и две ссылки на узлы, находящиеся в этом дереве, найдите наименьшего общего предка этих двух узлов. У узлов нет родительских указателей.

Подход

Итак, существует множество вариантов этой задачи, где можно построить хеш-таблицу, создать родительские указатели и т. д. Мы сосредоточимся на рекурсивном решении.

Алгоритм

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

Если мы видим какой-либо узел, мы его возвращаем. Если же узел не найден при поиске по поддереву, будет возвращено значение null, и оно будет поднято наверх.

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

Если мы ничего не нашли слева, мы просто поднимаем то, что находится справа (каким бы ни был результат поиска). Этот узел, на котором мы находимся, не может быть LCA, поскольку ни слева, ни справа не дали нам нужных двух узлов.

Если мы ничего не нашли справа, мы просто поднимаем то, что находится слева (каким бы ни был результат поиска). Этот узел, на котором мы находимся, не может быть LCA, поскольку ни слева, ни справа не дали нам нужных двух узлов.

Если и справа, и слева результаты не равны нулю, мы нашли наш LCA.

Почему?

Мы знаем, что это, по крайней мере, предок, но мы точно знаем, что это низший общий предок, потому что мы пошли снизу вверх, и всё, что мы встретим, будет LCA, и оно поднимется наверх.

Сложности

Время: O(n)

В процессе поиска мы будем использовать всё дерево. В дереве n узлов, и в каждом узле мы выполняем O(1) операций. Хотя вызовов не ровно n, мне нужно это перепроверить... Мне нужно решить рекуррентное соотношение, ну да ладно... мы знаем, что оно останется линейным в асимптотике.

Пространство: O(h)

Использование стека в максимуме будет равно высоте дерева. В худшем случае O(n), если наше дерево скошено исключительно влево или вправо, и нам нужно найти глубокие узлы. Но в этом случае n равно h. Но мы говорим O(n) в этом случае, поскольку это более точно отражает происходящее: размер дерева в узлах доминирует над высотой.

++++++++++++++++++++++++++++++++++++++++++++++++++++

HackerRank:    / @hackerrankofficial  

Тушар Рой:    / tusharroy2525  

GeeksForGeeks:    / @geeksforgeeksvideos  

Джарвис Джонсон:    / vsympathyv  

Успех в технологиях:    / @successintech  

Наименьший общий предок между двумя узлами двоичного дерева (рекурсивный подход)

Поделиться в:

Доступные форматы для скачивания:

Скачать видео mp4

  • Информация по загрузке:

Скачать аудио mp3

Похожие видео

All Nodes Distance K In A Binary Tree - Performing Bidirectional Search On A Tree Using A Hashtable

All Nodes Distance K In A Binary Tree - Performing Bidirectional Search On A Tree Using A Hashtable

Implement A Binary Heap - An Efficient Implementation of The Priority Queue ADT (Abstract Data Type)

Implement A Binary Heap - An Efficient Implementation of The Priority Queue ADT (Abstract Data Type)

JavaTutorial _ 10 _ Sum of Odd Numbers Using For Loop

JavaTutorial _ 10 _ Sum of Odd Numbers Using For Loop

Serialize & Deserialize A Binary Tree - Crafting Recursive Solutions To Interview Problems

Serialize & Deserialize A Binary Tree - Crafting Recursive Solutions To Interview Problems

Binary Tree Bootcamp: Full, Complete, & Perfect Trees. Preorder, Inorder, & Postorder Traversal.

Binary Tree Bootcamp: Full, Complete, & Perfect Trees. Preorder, Inorder, & Postorder Traversal.

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

НАИМЕНЬШИЙ ОБЩИЙ ПРЕДОК ДВОИЧНОГО ДЕРЕВА III [PYTHON]

НАИМЕНЬШИЙ ОБЩИЙ ПРЕДОК ДВОИЧНОГО ДЕРЕВА III [PYTHON]

Наименьший общий предок двоичного дерева 3 || Leetcode 1650 || 2 варианта вопросов, которые задаю...

Наименьший общий предок двоичного дерева 3 || Leetcode 1650 || 2 варианта вопросов, которые задаю...

Алгоритм быстрой сортировки: выбор опорного элемента, разбиение и рекурсия

Алгоритм быстрой сортировки: выбор опорного элемента, разбиение и рекурсия

Россияне готовятся к шоку и уходят в кэш.. ЦБ запустил печатный станок || Дмитрий Потапенко*

Россияне готовятся к шоку и уходят в кэш.. ЦБ запустил печатный станок || Дмитрий Потапенко*

Список запретов в России на 2026 год – Как это коснется каждого?

Список запретов в России на 2026 год – Как это коснется каждого?

6. Binary Trees, Part 1

6. Binary Trees, Part 1

Maximum Sum Rectangle In A 2D Matrix - Kadane's Algorithm Applications (Dynamic Programming)

Maximum Sum Rectangle In A 2D Matrix - Kadane's Algorithm Applications (Dynamic Programming)

НАИМЕНЬШИЙ ОБЩИЙ ПРЕДОК ДВОИЧНОГО ДЕРЕВА II | PYTHON | LEETCODE 1644

НАИМЕНЬШИЙ ОБЩИЙ ПРЕДОК ДВОИЧНОГО ДЕРЕВА II | PYTHON | LEETCODE 1644

AVL Trees & Rotations (Self-Balancing Binary Search Trees)

AVL Trees & Rotations (Self-Balancing Binary Search Trees)

5 тревожных знаков, что ИИ — это пузырь! Как не попасть в ловушку?

5 тревожных знаков, что ИИ — это пузырь! Как не попасть в ловушку?

📚2-HOUR LATE NIGHT STUDY / gentle rain🌧 + lofi music  / 50 minute Pomodoro / with timer+bell

📚2-HOUR LATE NIGHT STUDY / gentle rain🌧 + lofi music / 50 minute Pomodoro / with timer+bell

Search A 2D Sorted Matrix - Fundamentals of Search Space Reduction

Search A 2D Sorted Matrix - Fundamentals of Search Space Reduction

The 0/1 Knapsack Problem (Demystifying Dynamic Programming)

The 0/1 Knapsack Problem (Demystifying Dynamic Programming)

Расстояние редактирования между двумя строками — расстояние Левенштейна («Расстояние редактирован...

Расстояние редактирования между двумя строками — расстояние Левенштейна («Расстояние редактирован...

© 2025 dtub. Все права защищены.



  • Контакты
  • О нас
  • Политика конфиденциальности



Контакты для правообладателей: [email protected]