У меня есть двоичное дерево в качестве входных данных функции. У меня есть корень дерева и 2 узла. Мне нужно вычислить сумму вдоль пути между двумя заданными узлами.
Пример дерева:
4
/ \
8 13
/ \
24 45
Код:
List<Node> findPath(root, target):
if (root !=null)
return
if root == node{
return nodes.add(target)
}
path = findPath(root.left, target)
if (path !=null){
return nodes.add(root).addAll(path)
}
path = findPath(root.right, target)
if (path!=null)
return nodes.add(root).addAll(path)
Я не знаю, каким будет следующий шаг, если у меня есть пути к целевым узлам, как мне рассчитать оптимальный путь?
Input: sumTree(4, 24, 45)
Output: 8 + 24 + 45 = 77
Input: sumTree(4, 24, 13)
Output: 13 + 4 + 8 + 24 = 49
Input: sumTree(4, 4, 13)
Output: 4 + 13 = 17
Input: sumTree(4, 45, 45)
Output: 45
Язык - это JAVAно язык не имеет значения, если я не понимаю синтаксис, я просто хочу иметь оптимальное решение.Можно ли предоставить какой-нибудь псевдокод?