import { TreeNode } from "../mod.ts"; export default function longestUnivaluePath(root: TreeNode | null): number { if (!root) return 0; let res = 0; dfs(root, (s) => (res = Math.max(res, s))); return res; } function dfs(root: TreeNode | null, out: (s: number) => void) { if (!root) { return 0; } const left = dfs(root.left, out); const right = dfs(root.right, out); let left1 = 0, right1 = 0; if (root.left && root.left.val === root.val) { left1 = left + 1; } if (root.right && root.right.val === root.val) { right1 = right + 1; } out(left1 + right1); return Math.max(left1, right1); }