Есть компонент с иерархическим списком данных в виде дерева. Нужно отрендерить это дерево: родители и дети с отступом правее. Реализуй рендеринг без функций скрытия/раскрытия.

Дерево удобно отрисовать рекурсивно: каждый узел выводит подпись и вложенный список детей, который создаёт отступ.

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

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

Дерево удобно отрисовать рекурсивно: каждый узел выводит подпись и вложенный список детей, который создаёт отступ.

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

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

Дерево удобно отрисовать рекурсивно: каждый узел выводит подпись и вложенный список детей, который создаёт отступ.

Для данных вида { id, label, children } пример на React:

function Tree({ nodes }) {
  return <ul style={{ paddingInlineStart: 20 }}>
    {nodes.map(node => <li key={node.id}>
      <span>{node.label}</span>
      {node.children?.length > 0 && <Tree nodes={node.children} />}
    </li>)}
  </ul>;
}

Предполагаются уникальные id среди соседей и отсутствие циклов. Сложность обхода O(n), глубина рекурсии соответствует глубине дерева. Это обычный вложенный список без интерактивного раскрытия.

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

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

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

Подробнее