Дано бинарное дерево. Путь в бинарном дереве - это последовательность узлов, где каждая пара соседних узлов в последовательности имеет соединяющее их ребро. Узел может появляться в последовательности не более одного раза. Обратите внимание, что путь не обязательно должен проходить через корень.
Сумма пути - это сумма значений узлов на пути.
Нужно написать функцию, которая принимает на вход корень бинарного дерева и возвращает максимальную сумму пути.
Функция должна принимать один аргумент - корень бинарного дерева, который представлен в виде класса TreeNode. Класс TreeNode имеет следующие свойства:
Дано бинарное дерево:
1
/ \\\\
2 3
Input: root = [1,2,3]
Output: 6
Explanation: Максимальная сумма пути проходит через узел 1 (сумма пути: 2 + 1 + 3 = 6).
Дано бинарное дерево:
-10
/ \\\\
9 20
/ \\\\
15 7
Input: root = [-10,9,20,null,null,15,7]
Output: 42
Explanation: Максимальная сумма пути проходит через узлы: 15, 20, 7 (сумма пути: 15 + 20 + 7 = 42).
Для решения данной задачи будем использовать рекурсивный алгоритм. На каждом шаге будем находить максимальную сумму пути, проходящего через текущий узел, а также максимальную сумму пути в левом и правом поддеревьях. Общая максимальная сумма пути будет равна максимальной из сумм, найденных на каждом шаге.