欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

树的广度优先遍历(BFS)的Java实现

程序员文章站 2022-05-22 20:58:33
...

BFS实现(Java)

在上一篇博客中,提到了DFS的实现和原理。BFS作为树的另外一种重要的遍历方式,其本质原理是层次遍历:一层一层向下,每一层又是从左向右遍历。那么,仔细分析这种遍历方法之后就会发现队列这种数据结构是其实现的关键所在。

那么问题来了,Java中并无集成的队列数据结构

不过,集合中的LinkedList可以很好地解决这个问题,通过add( )、remove( )函数可以很好地模拟队列这种先进先出的数据结构。具体的实现代码如下:

public static ArrayList<Integer> bfs(TreeNode root){
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        ArrayList<Integer> list = new ArrayList<>();
        if(root==null){
            return list;
        }
        queue.add(root);
        while (!queue.isEmpty()){
            TreeNode t = queue.remove();
            list.add(t.val);
            if(t.left!=null){
                queue.add(t.left);
            }
            if(t.right!=null){
                queue.add(t.right);
            }
        }
        return list;
    }

欢迎大家指正,一起讨论~