Сформировать массив бинарного дерева

134
01 апреля 2019, 14:10
$massive = array(
    0 => array(
              "id" => 2,
              "parent" => 0
            ),
    1 => array(
              "id" => 3,
              "parent" => 2
            ),
    2 => array(
              "id" => 4,
              "parent" => 3
            ),
    3 => array(
              "id" => 5,
              "parent" => 3
            ),
    4 => array(
              "id" => 6,
              "parent" => 4
            ),
  );

Как из этого массива сформировать массив бинарного дерева через циклы? Не используя рекурсию и классы

Answer 1
// в качестве таблицы БД просто массив
$elems = array(
    array( 'id' => 1, 'pid' => 0, 'title' => '1' ),
    array( 'id' => 2, 'pid' => 1, 'title' => '2' ),
    array( 'id' => 3, 'pid' => 1, 'title' => '3' ),
    array( 'id' => 4, 'pid' => 3, 'title' => '4' ),
    array( 'id' => 5, 'pid' => 0, 'title' => '5' ),
    array( 'id' => 6, 'pid' => 5, 'title' => '6' ),
    array( 'id' => 7, 'pid' => 5, 'title' => '7' ),
    array( 'id' => 8, 'pid' => 5, 'title' => '8' ),
    array( 'id' => 9, 'pid' => 0, 'title' => '9' ),
);
$links = array();
$tree = array();
for( $q = 0; $q < count( $elems ); $q++ )
{
    $elem = $elems[$q];   
    if( $elem['pid'] === 0 )
    {
        $tree[$elem['id']] = $elem;
        $links[$elem['id']] = &$tree[$elem['id']];
    }
    else
    {
        $links[$elem['pid']]['childrens'][$elem['id']] = $elem;
        $links[$elem['id']] = &$links[$elem['pid']]['childrens'][$elem['id']];
    }
}
READ ALSO
MVC: как правильно представить шаблон(view)?

MVC: как правильно представить шаблон(view)?

После того как модели сформировали нужные массивы данных, контроллер должен выбрать нужный шаблон с html - кодом, в который будут подставляться...

167
Создание изображения круга с буквой в центре

Создание изображения круга с буквой в центре

Нужно создать изображение круга с зеленым фоном и размером 50х50 пикселейВ центре символ I белым цветом

151
Категория товара Woocommerce

Категория товара Woocommerce

В woocommerce реализована древовидная структура категорий товаровЯ получаю id всех категорий, к которым принадлежит товар, начиная с самой верхней

147
Проблемы с путями при вызове теста. Laravel

Проблемы с путями при вызове теста. Laravel

Получаю ошибку следующего содержания: Failed asserting that 500 matches expected 200

127