Binary Tree Paths

EasyStringBacktrackingTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function binaryTreePaths(root: TreeNode | null): string[] {
  if (!root) {
    return [];
  }
 
  const answer: string[] = [];
  function dfs(node: TreeNode, paths: number[]) {
    if (!node.left && !node.right) {
      answer.push(paths.join('->'));
      return;
    }
    if (node.left) {
      paths.push(node.left.val);
      dfs(node.left, paths);
      paths.pop();
    }
    if (node.right) {
      paths.push(node.right.val);
      dfs(node.right, paths);
      paths.pop();
    }
  }
  dfs(root, [root.val]);
 
  return answer;
}