问题描述
根据给出的文件路径,遍历该路径下的所有文件夹和文件,并打印出文件名。
要求:
第一行打印在所给路径的下一级的所有文件
第二行打印再下一级的文件,依次类推
如硬盘目录如下:
d:/a.txt
d:/b.txt
d:/da/da.txt
d:/da/ce/ce.txt
d:/fg/fg.txt
则输出:
a.txt b.txt
[da] [fg]
da.txt ce.txt fg.txt
问题分析
1、这是一个典型的多叉树广度优先遍历问题,按照广度遍历二叉树的算法解决
2、由于要求每一级别目录或文件打印在不同的行,所以需要在对列增加一个挡板(标记)来区分遍历的是第几层目录
3、广度遍历二叉树算法如下:
(1)初始化一个队列,将根节点加入队列
(2)当队列非空时,重复执行步骤(3)到(5),否则执行(6)
(3)从队列取出一个节点,访问该节点
(4)若该节点左子树为空,则将左节点加入队列
(5)若该节点右子树为空,则将右节点加入队列
(6)结束
4、因为目录结构相当于多叉树,所以步骤(3)到(5)修改为遍历每个子节点
5、当第一节点遍历子节点时,向队列加入挡板标示,区分换行输出