zoukankan      html  css  js  c++  java
  • 图--广度优先遍历/深度优先遍历的一些理解

    package cn.it;

    import java.io.File;
    import java.util.LinkedList;
    import java.util.Queue;

    public class FileUtil {
        public static void main(String[] args) {
            File root = new File("/usr/local/soft_pack/book");
            showFile_ByDFS(root);
            
            System.out.println("================================ ");
            
            root = new File("/usr/local/soft_pack/book_book");
            Queue<File> queue = new LinkedList<File>();
            queue.offer(root);
            showFile_ByBFS(root, queue);
        }

        // 深度优先遍历(DFS)  --利用递归实现(打破砂锅问到底)
        public static void showFile_ByDFS(File root) {
            if (root.isFile()) {
                System.out.println(root.getName());
                return;
            }
            if (root.isDirectory()) {
                System.out.println(root.getName());
                File[] files = root.listFiles();
                for (int i = 0; i < files.length; i++) {
                    showFile_ByDFS(files[i]);
                }
            }
        }

        // 广度优先遍历(BFS)  -- 利用队列实现(先进先出FIFO)
        public static void showFile_ByBFS(File root, Queue<File> fileQueue) {
            while (!fileQueue.isEmpty()) {
                File fileroot = fileQueue.poll();
                System.out.println(fileroot.getName());
                
                if (fileroot.isDirectory()) {
                    File[] files = fileroot.listFiles();
                    for (int i = 0; i < files.length; i++) {
                        fileQueue.offer(files[i]);
                    }
                }
            }
        }
    }

  • 相关阅读:
    idea 2017版破解
    UIRecorder 学习了解
    简单应用单例模式
    线程安全的单例模式(有参and无参)
    批量删除和批量修改(参数使用list)
    简单线程池开启线程
    随机数生成
    网络延迟-tc工具使用简单说明
    c++高级元编程 第一部分,第一节,第一小节
    Writing_Bug_Free_C_Code_Chapter_2_Know_Your_Environment
  • 原文地址:https://www.cnblogs.com/mozhuhao/p/4464914.html
Copyright © 2011-2022 走看看