Distribute Coins in Binary Tree

MediumTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function distributeCoins(root: TreeNode | null): number {
  let answer = 0;
  function traverse(node: TreeNode | null): number {
    if (node === null) {
      return 0;
    }
    const left = traverse(node.left);
    const right = traverse(node.right);
    answer += Math.abs(left) + Math.abs(right);
    return node.val + left + right - 1;
  }
  traverse(root);
  return answer;
}