Максимальный путь в дереве

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

Корень — вершина, у которой нет родительской вершины.

Лист — вершина дерева, у которой нет ни одного ребенка.

Примеры

     1                  1                0
   /   \              /   \            /   \
  5     2            5     2         -5    -2
 / \   / \          /     /          / \  
1   3 8   9        7     30        -7   6

↑   ↑ ↑   ↑        ↑     ↑          ↑   ↑   ↑
7   9 11  12       13    33        -12  1   -2

maxPath = 12      maxPath = 33      maxPath = 1

Код для тестирования

Объект, соответствующий первому дереву из примера выше:

const root = { value: 1, // ← left: { value: 5, left: { value: 1, left: null, right: null, }, right: { value: 3, left: null, right: null, }, }, right: { value: 2, // ← left: { value: 8, left: null, right: null, }, right: { value: 9, // ← left: null, right: null, }, }, }; console.log(maxSum(root)); // 1 + 2 + 9 === 12