> Как определить в SQL, что узел является корневым, листом или внутренним узлом (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Wildberries

Стек: Go

> Пример ответа

В SQL для определения типа узла (корневой, лист, внутренний) в иерархической структуре (например, дерево категорий или сотрудников) обычно используется самосоединение таблицы с полями id и parent_id. Вот пример запроса:

SQL
SELECT
id,
CASE
WHEN parent_id IS NULL THEN 'Root'
WHEN id NOT IN (SELECT DISTINCT parent_id FROM tree WHERE parent_id IS NOT NULL) THEN 'Leaf'
ELSE 'Inner'
END AS node_type
FROM tree;

Объяснение:

  • Корневой узел (Root): parent_id IS NULL - узел не имеет родителя.
  • Лист (Leaf): узел не является родителем ни для одного другого узла - проверяется отсутствие его id в столбце parent_id.
  • Внутренний узел (Inner): все остальные случаи - узел имеет родителя и сам является родителем для других.

В Go при работе с такими данными (например, через database/sql) вы можете выполнить этот запрос и обработать результат, сопоставив строку node_type с константами или перечислением.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью