Эйч
Эйч
  • Все менторы
Задачи/PHP-разработчик/Преобразование плоского массива в вложенное дерево

Преобразование плоского массива в вложенное дерево

Условие задачи

Дана плоская структура данных — массив ветвей дерева, каждая из которых содержит уникальный идентификатор "id" и ссылку на родительский узел "parent", которая может быть либо "null", либо равна "id" другого элемента. Необходимо восстановить полное дерево, вложенность которого может быть неограниченной, группируя наследников по их родителям.

php/**
 * @param array{int, array{id: int, name: string, parent: ?int}} $dataset
 *
 * @return array{int, array{id: int, name: string, parent: ?int, children: array{int, array}}}
 */
function mapTree(array $dataset): array
{
    // do something
}

function testBuildTree(): void
{
    $input = [
        0 => ['id' => 0, 'parent' => null], // Root
        1 => ['id' => 1, 'parent' => null], // Root
        2 => ['id' => 2, 'parent' => 1], // Child 1
        3 => ['id' => 3, 'parent' => 1], // Child 2
        4 => ['id' => 4, 'parent' => 2], // Grandchild 1
        5 => ['id' => 5, 'parent' => 4], // Great-Grandchild 1
    ];

    $expected = [
        0 => ['id' => 0, 'parent' => null],
        1 => [
            'id' => 1, 'parent' => null, 'children' => [
                0 => ['id' => 2, 'parent' => 1, 'children' => [
                    0 => ['id' => 4, 'parent' => 2, 'children' => [
                        0 => ['id' => 5, 'parent' => 4],
                    ]],
                ]],
                1 => ['id' => 3, 'parent' => 1],
            ],
        ],
    ];

    assert(mapTree($input) === $expected);
}

testBuildTree();

Профессия

PHP-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта