ycliper

Популярное

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

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

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

Топ запросов

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

Подсчитайте общее количество уникальных двоичных деревьев поиска — n-ное каталонское число (динам...

Автор: Back To Back SWE

Загружено: 2019-01-15

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

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

Вопрос: При заданном n, сколько структурно уникальных BST (бинарных деревьев поиска), хранящих значения 1 ... n?

Каталонские числа: https://en.wikipedia.org/wiki/Catalan...

Определите G(n): количество уникальных BST для последовательности длины n.

G(0) = 1
G(1) = 1

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

Определим F(i,n): количество уникальных BST-деревьев, где число i служит корнем BST (1 меньше или равно i, которое меньше или равно n).

G(n) = сумма F(i, n) от 1 до n.

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

Пример:

n ​​= 5, то есть [1, 2, 3, 4, 5]

При вычислении F(3, 5) мы получим
левое поддерево с [1, 2], то есть G(2);
правое поддерево с [4, 5], то есть G(2);

G(n) вычисляет количество уникальных деревьев, которые мы можем построить из n возможных значений, независимо от того, каковы эти значения.

Реализация

Заметим, что F(i, n) = G(i - 1) * G(n - i)

Чтобы получить F(i, n), мы рассматриваем все комбинации вариантов левого дерева со всеми вариантами правого дерева.

Это исчерпывающее сопоставление двух наборов элементов называется декартовым произведением.

Теперь у нас есть новый способ выразить F(i, n)

F(i, n) = G(i - 1) * G(n - i)

G(n) = суммирование от 1 до n значений G(i - 1) * G(n - i)

Теперь это можно решить с помощью DP, используя нисходящую рекурсию или восходящий алгоритм.

Для каждого G(n) вплоть до запрошенного n мы решим уравнение суммирования G(n).

В конце мы возвращаем запрошенное значение G(n), для которого в итоге получим ответ.

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

HackerRank:    / @hackerrankofficial  

Тушар Рой:    / tusharroy2525  

GeeksForGeeks:    / @geeksforgeeksvideos  

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

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

Не удается загрузить Youtube-плеер. Проверьте блокировку Youtube в вашей сети.
Повторяем попытку...
Подсчитайте общее количество уникальных двоичных деревьев поиска — n-ное каталонское число (динам...

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

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

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

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

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

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

Compute The Next Permutation of A Numeric Sequence - Case Analysis (

Compute The Next Permutation of A Numeric Sequence - Case Analysis ("Next Permutation" on Leetcode)

Каталонские числа выведены!

Каталонские числа выведены!

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition

Catalan Numbers - Numberphile

Catalan Numbers - Numberphile

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

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

The Change Making Problem - Fewest Coins To Make Change Dynamic Programming

The Change Making Problem - Fewest Coins To Make Change Dynamic Programming

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

Total Unique Ways To Make Change - Dynamic Programming (

Total Unique Ways To Make Change - Dynamic Programming ("Coin Change 2" on LeetCode)

The Most Important Sequence: The Catalan Numbers

The Most Important Sequence: The Catalan Numbers

Необычная задача с ОЛИМПИАДЫ!

Необычная задача с ОЛИМПИАДЫ!

Эта Хитрая Задача С Мехмата Завалила Сотни! Решишь?

Эта Хитрая Задача С Мехмата Завалила Сотни! Решишь?

ChatGPT продает ваши чаты, Anthropic создает цифровых существ, а Маск как всегда…

ChatGPT продает ваши чаты, Anthropic создает цифровых существ, а Маск как всегда…

Почему Ядерная война уже началась (А вы не заметили)

Почему Ядерная война уже началась (А вы не заметили)

Find The Longest Increasing Subsequence - Dynamic Programming Fundamentals

Find The Longest Increasing Subsequence - Dynamic Programming Fundamentals

10.1 AVL Tree - Insertion and Rotations

10.1 AVL Tree - Insertion and Rotations

Мы стоим на пороге нового конфликта! Что нас ждет дальше? Андрей Безруков про США, Россию и кризис

Мы стоим на пороге нового конфликта! Что нас ждет дальше? Андрей Безруков про США, Россию и кризис

ГИПОТЕЗА КАКЕЯ: От детской загадки до преобразования Фурье | LAPLAS

ГИПОТЕЗА КАКЕЯ: От детской загадки до преобразования Фурье | LAPLAS

The Backtracking Blueprint: The Legendary 3 Keys To Backtracking Algorithms

The Backtracking Blueprint: The Legendary 3 Keys To Backtracking Algorithms

Константа Капрекара

Константа Капрекара

Unique Binary Search Trees - Leetcode 96 - Python Dynamic Programming

Unique Binary Search Trees - Leetcode 96 - Python Dynamic Programming

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



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



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