979. Distribute Coins in Binary Tree

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
private static class ResultHolder {
private int moves;
}

public int distributeCoins(TreeNode root) {
ResultHolder resultHolder = new ResultHolder();
dfs(resultHolder, root);
return resultHolder.moves;
}

private int dfs(ResultHolder resultHolder, TreeNode root) {
if (root == null) {
return 0;
}

int left = dfs(resultHolder, root.left);
int right = dfs(resultHolder, root.right);
resultHolder.moves += Math.abs(left) + Math.abs(right);
return root.val - 1 + left + right;
}
}

References

979. Distribute Coins in Binary Tree