|
本文实例讲述了php遍历树的常用方法。分享给大家供大家参考。具体如下:
一、递归的深度优先的算法:
----------------------- Test run for '.$func.'() ';
flush();
$time_start = microtime(true);
$list = $func($trydir);
//print_r($list);
$time = microtime(true) - $time_start;
echo 'Finished : '.count($list).' files';
$mem2 = memory_get_peak_usage();
printf('Max memory for '.$func.'() : %0.2f kbytes Running time for '.$func.'() : %0.f s',
($mem2-$mem1)/1024.0, $time);
return $list;
}
profile('rec_list_files', "D:\www\server");
?>
二、递归的深度优先的算法(用了一个栈来实现)
----------------------- Test run for '.$func.'() ';
flush();
$time_start = microtime(true);
$list = $func($trydir);
//print_r($list);
$time = microtime(true) - $time_start;
echo 'Finished : '.count($list).' files';
$mem2 = memory_get_peak_usage();
printf('Max memory for '.$func.'() : %0.2f kbytes Running time for '.$func.'() : %0.f s',
($mem2-$mem1)/1024.0, $time);
return $list;
}
profile('deep_first_list_files', "D:\www\server");
?>
三、非递归的广度优先算法(用了一个队列来实现)
NEXT CHILD
}
return $files; // end of tree, file not found
}
function profile($func, $trydir)
{
$mem1 = memory_get_usage();
echo '----------------------- Test run for '.$func.'() ';
flush();
$time_start = microtime(true);
$list = $func($trydir);
//print_r($list);
$time = microtime(true) - $time_start;
echo 'Finished : '.count($list).' files';
$mem2 = memory_get_peak_usage();
printf('Max memory for '.$func.'() : %0.2f kbytes Running time for '.$func.'() : %0.f s',
($mem2-$mem1)/1024.0, $time);
return $list;
}
profile('breadth_first_files', "D:\www\server");
?>
希望本文所述对大家的php程序设计有所帮助。
您可能感兴趣的文章:php FLEA中二叉树数组的遍历输出PHP Class&Object -- PHP 自排序二叉树的深入解析php通过前序遍历树实现无需递归的无限极分类PHP实现二叉树的深度优先与广度优先遍历方法PHP实现的线索二叉树及二叉树遍历方法详解php实现的二叉树遍历算法示例PHP构造二叉树算法示例PHP完全二叉树定义与实现方法示例PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
|
|