Binary Tree Tilt

EasyTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function findTilt(root: TreeNode | null): number {
  if (!root) {
    return 0;
  }
 
  const dfs = (node: TreeNode | null): [number, number] => {
    if (!node) {
      return [0, 0];
    }
    const [leftSum, leftTilt] = dfs(node.left);
    const [rightSum, rightTilt] = dfs(node.right);
    return [leftSum + rightSum + node.val, leftTilt + rightTilt + Math.abs(leftSum - rightSum)];
  };
 
  return dfs(root)[1];
}