Find Mode in Binary Search Tree

EasyTreeDepth-First SearchBinary Search TreeBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function findMode(root: TreeNode | null): number[] {
  if (root === null) {
    return [];
  }
  let maxModeCount = 0;
  const modeCounter = new Map<number, number>();
  const dfs = (node: TreeNode) => {
    const modeCount = modeCounter.get(node.val) ?? 0;
    modeCounter.set(node.val, modeCount + 1);
    maxModeCount = Math.max(maxModeCount, modeCount + 1);
    node.left && dfs(node.left);
    node.right && dfs(node.right);
  };
  dfs(root);
  return [...modeCounter.keys()].filter((mode) => modeCounter.get(mode) === maxModeCount);
}