protected function renderNode($tree, $depth = 0, $cap = 0)
{
$n = count($tree);
foreach ($tree as $k => $next) {
for ($pre = "", $i = $depth - 1; $i >= 0; $i--) {
$pre .= $cap >> $i & 1 ? "│ " : " ";
}
echo $pre, --$n > 0 ? '├──' : '└──', $k, PHP_EOL;
if (false === empty($next)) {
$this->renderNode($next, $depth + 1, $cap << 1 | $n > 0);
}
}
}