深度优先搜索算法
其实BFS在我们本科学习数据结构时就学过了,但我想很多人都像我一样当初并不会其代码实现,只是知道其原理。
BFS的原理就是通过两次染色,标记当前遍历层的节点并且标记下一次要遍历的层的节点,递归这个做法执行。通常编程题目需要我们输出所有可能的结果我们会使用DFS,而如果要我们得到的是最短路径的一个结果我们常常使用BFS。BFS有多种实现方法,下面我用的是使用两个队列来实现。
层级遍历二叉树
首先是树的结构
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val){
this.val = val;
}
}
然后建立一颗样例二叉树并且执行我们的BFS算法
public static void main(String[] args) {
TreeNode node = new TreeNode(0);
node.left = new TreeNode(1);
node.right = new TreeNode(2);
node.left.left = new TreeNode(3);
node.left.right = new TreeNode(4);
node.right.right = new TreeNode(5);
System.out.print(level(node));
}
具体算法:
static List<List<Integer>> level(TreeNode node){
List<List<Integer>> res = new ArrayList<>();

本文介绍了如何使用BFS算法进行二叉树的层级遍历,并讨论了如何修改BFS实现ZigZag(蛇形)的层级遍历,详细解释了算法原理及代码实现。
最低0.47元/天 解锁文章
467

被折叠的 条评论
为什么被折叠?



