Add One Row to Tree

MediumTreeDepth-First SearchBreadth-First SearchBinary Tree

Solution

import { TreeNode } from '@algorithm/lib';
 
export function addOneRow(root: TreeNode | null, val: number, depth: number): TreeNode | null {
  if (depth === 1) {
    return new TreeNode(val, root);
  }
 
  function dfs(node: TreeNode | null, nodeDepth: number) {
    if (node === null) {
      return;
    }
    if (nodeDepth < depth - 1) {
      dfs(node.left, nodeDepth + 1);
      dfs(node.right, nodeDepth + 1);
    } else {
      const leftNode = node.left;
      node.left = new TreeNode(val);
      node.left.left = leftNode;
 
      const rightNode = node.right;
      node.right = new TreeNode(val);
      node.right.right = rightNode;
    }
  }
 
  dfs(root, 1);
  return root;
}