Skip to content

Commit

Permalink
Tree branch sum
Browse files Browse the repository at this point in the history
  • Loading branch information
aarexer committed Aug 29, 2023
1 parent 430b89f commit ce00586
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
37 changes: 37 additions & 0 deletions interview/algos/binary_tree_max_sum.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Максимальная сумма значений ветки дерева

## Условие

Дано бинарное дерево, каждая вершина которого это:

```java
class TreeNode {
int value;
TreeNode left;
TreeNode right;
}
```

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

## Решение

```java
public class TreeNode {
int value;
TreeNode left;
TreeNode right;

public static int maxSum(TreeNode root) {
if (root == null) {
return 0;
}

return root.value + Math.max(sum(root.left), sum(root.right));
}
}
```

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

Идея в том, чтобы "посчитать" сумму значений каждой ветки, а после взять наибольшую.
1 change: 1 addition & 0 deletions interview/algos/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Деревья

* [Высота бинарного дерева](./binary_tree_depth.md)
* [Максимальная сумма значений ветки дерева](./binary_tree_max_sum.md)
* [Обход дерева и сбор всех нод в коллекцию](./collect_all_tree_nodes.md)

## Геометрия
Expand Down

0 comments on commit ce00586

Please sign in to comment.