Sum of Root To Leaf Binary Numbers

EasyTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function sumRootToLeaf(root: TreeNode | null): number {
  if (!root) {
    return 0;
  }
  let answer = 0;
  const dfs = (node: TreeNode, prev = 0) => {
    const current = (prev << 1) + node.val;
    if (!node.left && !node.right) {
      answer += current;
      return;
    }
    node.left && dfs(node.left, current);
    node.right && dfs(node.right, current);
  };
  dfs(root);
  return answer;
}