Реализовать функцию, которая выведет все значения на концах "ветвей" в консоль

Обойдите left и right: числовой узел выведите, отсутствующий пропустите, для объекта повторите обход. Проверка типа сохраняет в том числе нулевые листья.

Короткий ответ

Что ответить на собеседовании

Обойдите left и right: числовой узел выведите, отсутствующий пропустите, для объекта повторите обход. Проверка типа сохраняет в том числе нулевые листья.

Подробный разбор

Ответ с пояснениями

Условие

Реализовать функцию, которая выведет все значения на концах "ветвей" в консоль

interface ITree { left?: ITree | number; right?: ITree | number; }

function printTree(data: ITree): void {}

Ответ

Обойдите left и right: числовой узел выведите, отсутствующий пропустите, для объекта повторите обход. Проверка типа сохраняет в том числе нулевые листья.

Для конечного дерева без циклов:

interface ITree {
  left?: ITree | number;
  right?: ITree | number;
}
function printTree(data: ITree): void {
  function visit(node: ITree | number | undefined): void {
    if (node === undefined) return;
    if (typeof node === 'number') { console.log(node); return; }
    visit(node.left);
    visit(node.right);
  }
  visit(data);
}

Обход слева направо занимает O(n), стек — O(h). Для очень глубокого дерева лучше явный стек, чтобы не переполнить стек вызовов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее