本篇文章主要介绍php常用的三种遍历树的技巧,感兴趣的朋友参考下,希望对大家有所帮助。
本文实例讲述了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"); ?>
三、非递归的广度优先算法(用了一个队列来实现)
立即学习“PHP免费学习笔记(深入)”;
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");
?>总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:











