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

问题描述

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

 

要求:

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

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

 

如硬盘目录如下:

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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值