Smallest String Starting From Leaf

MediumStringBacktrackingTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function smallestFromLeaf(root: TreeNode | null): string {
  if (root === null) {
    return '';
  }
 
  let answer = '';
  function dfs(node: TreeNode, str: string) {
    const char = String.fromCharCode(node.val + 'a'.charCodeAt(0));
    if (node.left === null && node.right === null) {
      if (answer === '' || char + str < answer) {
        answer = char + str;
      }
      return;
    }
    if (node.left) {
      dfs(node.left, char + str);
    }
    if (node.right) {
      dfs(node.right, char + str);
    }
  }
  dfs(root, '');
  return answer;
}