Second Minimum Node In a Binary Tree

EasyTreeDepth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function findSecondMinimumValue(root: TreeNode | null): number {
  if (!root) {
    return -1;
  }
  // RootNode의 값이 모든 값 중 제일 작은 값
  const minValue = root.val;
  let secondMinValue = Number.MAX_SAFE_INTEGER;
  const dfs = (node: TreeNode | null) => {
    if (!node) {
      return;
    }
    if (minValue < node.val && node.val < secondMinValue) {
      secondMinValue = node.val;
      return;
    }
    if (node.val === minValue) {
      dfs(node.left);
      dfs(node.right);
    }
  };
 
  dfs(root);
  return secondMinValue === Number.MAX_SAFE_INTEGER ? -1 : secondMinValue;
}