php遍历树的常用方法汇总

前端之家收集整理的这篇文章主要介绍了php遍历树的常用方法汇总前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了PHP遍历树的常用方法分享给大家供大家参考。具体如下:

一、递归的深度优先的算法:

PHP;"> PHP define('DS',DIRECTORY_SEPARATOR); function rec_list_files($from = '.') { if(!is_dir($from)) { return array(); } $files = array(); if($dh = opendir($from)) { while(false !== ($file = readdir($dh))) { if($file == '.' || $file == '..') { continue; } $path = $from . DS . $file;
  if (is_file($path)) {
    $files[] = $path;
  }
  $files = array_merge($files,rec_list_files($path));
}
closedir($dh);

}
return $files;
}
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('rec_list_files',"D:\www\server");
?>

二、递归的深度优先的算法(用了一个栈来实现)

PHP;">

三、非递归的广度优先算法(用了一个队列来实现)

PHP;"> NEXT CHILD } return $files; // end of tree,file not found } function profile($func,$time); return $list; } profile('breadth_first_files',"D:\www\server"); ?>

希望本文所述对大家的PHP程序设计有所帮助。

原文链接:https://www.f2er.com/php/21754.html

猜你在找的PHP相关文章