<?php
array("id" => 1, "parentId" => null, "text" => "Первая строка"), array("id" => 2, "parentId" => 3, "text" => "Вторая строка"), array("id" => 3, "parentId" => 1, "text" => "Третья строка"), array("id" => 4, "parentId" => 1, "text" => "Четвертая строка"), array("id" => 5, "parentId" => null, "text" => "Пятая строка"), array("id" => 6, "parentId" => 5, "text" => "Шестая строка"), ["id" => 7, "parentId" => 6, "text" => "Седьмая строка"],
["id" => 8, "parentId" => 5, "text" => "Восьмая строка"],
);
/*
* 1 -> 3 -> 2
* \
* -> 4
*
* 5 -> 6 -> 7
* \
* -> 8
*/
return $node['parentId'] === null;
});
return [0, $root];
}, $roots);
function visit($depth, $node) {
echo str_repeat('-', $depth) . $node['id'] . "\n"; }
visit($depth, $current);
$currentChildren = array_filter($list, function ($node) use ($current) { return $node['parentId'] === $current['id'];
});
$depthChildMap = array_map(function ($child) use ($depth) { return [$depth + 1, $child];
}, $currentChildren);
}
PD9waHAKCiRsaXN0ID0gYXJyYXkoCiAgICBhcnJheSgiaWQiID0+IDEsICJwYXJlbnRJZCIgPT4gbnVsbCwgInRleHQiID0+ICLQn9C10YDQstCw0Y8g0YHRgtGA0L7QutCwIiksIAogICAgYXJyYXkoImlkIiA9PiAyLCAicGFyZW50SWQiID0+IDMsICAgICJ0ZXh0IiA9PiAi0JLRgtC+0YDQsNGPINGB0YLRgNC+0LrQsCIpLCAKICAgIGFycmF5KCJpZCIgPT4gMywgInBhcmVudElkIiA9PiAxLCAgICAidGV4dCIgPT4gItCi0YDQtdGC0YzRjyDRgdGC0YDQvtC60LAiKSwKICAgIGFycmF5KCJpZCIgPT4gNCwgInBhcmVudElkIiA9PiAxLCAgICAidGV4dCIgPT4gItCn0LXRgtCy0LXRgNGC0LDRjyDRgdGC0YDQvtC60LAiKSwKICAgIGFycmF5KCJpZCIgPT4gNSwgInBhcmVudElkIiA9PiBudWxsLCAidGV4dCIgPT4gItCf0Y/RgtCw0Y8g0YHRgtGA0L7QutCwIiksIAogICAgYXJyYXkoImlkIiA9PiA2LCAicGFyZW50SWQiID0+IDUsICAgICJ0ZXh0IiA9PiAi0KjQtdGB0YLQsNGPINGB0YLRgNC+0LrQsCIpLCAKICAgIFsiaWQiID0+IDcsICJwYXJlbnRJZCIgPT4gNiwgInRleHQiID0+ICLQodC10LTRjNC80LDRjyDRgdGC0YDQvtC60LAiXSwgCiAgICBbImlkIiA9PiA4LCAicGFyZW50SWQiID0+IDUsICJ0ZXh0IiA9PiAgItCS0L7RgdGM0LzQsNGPINGB0YLRgNC+0LrQsCJdLAopOwoKLyoKICogMSAtPiAzIC0+IDIKICogIFwKICogICAtPiA0CiAqCiAqIDUgLT4gNiAtPiA3CiAqICBcCiAqICAgLT4gOAogKi8KCiRyb290cyA9IGFycmF5X2ZpbHRlcigkbGlzdCwgZnVuY3Rpb24gKCRub2RlKSB7CiAgICByZXR1cm4gJG5vZGVbJ3BhcmVudElkJ10gPT09IG51bGw7Cn0pOwoKJHN0YWNrID0gYXJyYXlfbWFwKGZ1bmN0aW9uICgkcm9vdCkgewogICAgcmV0dXJuIFswLCAkcm9vdF07Cn0sICRyb290cyk7CgpmdW5jdGlvbiB2aXNpdCgkZGVwdGgsICRub2RlKSB7CiAgICBlY2hvIHN0cl9yZXBlYXQoJy0nLCAkZGVwdGgpIC4gJG5vZGVbJ2lkJ10gLiAiXG4iOwp9Cgp3aGlsZSAoY291bnQoJHN0YWNrKSkgewogICAgbGlzdCgkZGVwdGgsICRjdXJyZW50KSA9IGFycmF5X3NoaWZ0KCRzdGFjayk7CgogICAgdmlzaXQoJGRlcHRoLCAkY3VycmVudCk7CgogICAgJGN1cnJlbnRDaGlsZHJlbiA9IGFycmF5X2ZpbHRlcigkbGlzdCwgZnVuY3Rpb24gKCRub2RlKSB1c2UgKCRjdXJyZW50KSB7CiAgICAgICAgcmV0dXJuICRub2RlWydwYXJlbnRJZCddID09PSAkY3VycmVudFsnaWQnXTsKICAgIH0pOwogICAgJGRlcHRoQ2hpbGRNYXAgPSBhcnJheV9tYXAoZnVuY3Rpb24gKCRjaGlsZCkgdXNlICgkZGVwdGgpIHsKICAgICAgICByZXR1cm4gWyRkZXB0aCArIDEsICRjaGlsZF07CiAgICB9LCAkY3VycmVudENoaWxkcmVuKTsKCiAgICAkc3RhY2sgPSBhcnJheV9tZXJnZSgkZGVwdGhDaGlsZE1hcCwgJHN0YWNrKTsKfQo=