`

广度遍历树——遍历硬盘目录及文件

阅读更多

问题描述

根据给出的文件路径,遍历该路径下的所有文件夹和文件,并打印出文件名。

 

要求:

第一行打印在所给路径的下一级的所有文件

第二行打印再下一级的文件,依次类推

 

如硬盘目录如下:

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、当第一节点遍历子节点时,向队列加入挡板标示,区分换行输出

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics