Дано двоичное дерево, в котором каждый элемент узла содержит число. Задача состоит в том, чтобы найти минимально возможную сумму от одного конечного узла к другому.
Если одна сторона корня пуста, функция должна вернуть минус бесконечность.
Примеры:
Input : 4 / \ 5 -6 / \ / \ 2 -3 1 8 Output : 1 The minimum sum path between two leaf nodes is: -3 -> 5 -> 4 -> -6 -> 1 Input : 3 / \ 2 4 / \ -5 1 Output : -2
Подход: идея состоит в том, чтобы поддерживать два значения в рекурсивных вызовах:
- Минимальная сумма корневого пути для поддерева, укорененного в текущем узле.
- Минимальная сумма пути между листьями.
Для каждого посещенного узла X мы находим минимальную сумму от корня до листа в левом и правом поддеревьях X. Мы добавляем два значения с данными X и сравниваем сумму с текущей минимальной суммой пути.
Ниже приведена реализация вышеуказанного подхода:
|
Джава
|
python3
|
C #
|
Выход:
1
Рекомендуемые посты:
- Найти максимальную сумму пути между двумя листьями двоичного дерева
- Минимальный и максимальный узел, который лежит на пути, соединяющем два узла в двоичном дереве
- Найти сумму всех правильных листьев в заданном бинарном дереве
- Вывести все узлы в двоичном дереве с K листьями
- Высота бинарного дерева, учитывая только четные уровни
- Найти сумму всех левых листьев в данном бинарном дереве
- Извлечь листья бинарного дерева в двусвязный список
- Дерево с N узлами и K листьями так, чтобы расстояние между самыми дальними листьями было минимальным
- Минимальный своп, необходимый для преобразования двоичного дерева в двоичное дерево поиска
- Минимальное количество полных бинарных деревьев такое, что количество листьев равно N
- XOR пути между любыми двумя узлами в двоичном дереве
- Максимальная сумма пути в двоичном дереве
- Самый длинный путь с одинаковыми значениями в двоичном дереве
- Печатать путь между любыми двумя узлами в двоичном дереве | Набор 2
- Печатать путь между любыми двумя узлами в двоичном дереве
0.00 (0%) 0 votes