diff --git a/java/distribute-coins-in-binary-tree.java b/java/distribute-coins-in-binary-tree.java new file mode 100644 index 0000000..b7a67b8 --- /dev/null +++ b/java/distribute-coins-in-binary-tree.java @@ -0,0 +1,40 @@ +public class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode() {} + + TreeNode(int val) { + this.val = val; + } + + TreeNode(int val, TreeNode left, TreeNode right) { + this.val = val; + this.left = left; + this.right = right; + } +} + +class Solution { + private int distribute(TreeNode node) { + if (node == null) { + return 0; + } + + int left = distribute(node.left); + int right = distribute(node.right); + + moves += Math.abs(left) + Math.abs(right); + + return node.val - 1 + left + right; + } + + private int moves; + + public int distributeCoins(TreeNode root) { + moves = 0; + distribute(root); + return moves; + } +}