
从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS)。
BFS通常借助队列先进先出的特性去实现。
java:

//队列先进先出的特性
Queue<TreeNode> queue = new LinkedList<>();
//定义一个接受结果的容器
ArrayList<List<Integer>> list = new ArrayList<>();
特例处理: 当根节点为空,则返回空列表 [] ;
if(root != null){
queue.add(root);
}
BFS 循环: 当队列 queue 为空时跳出;
while(!queue.isEmpty()){
//由于该题是将每一层放进一个集合所以将每次循环看成一层的话
//每层需要初始化一个集合来接受
//新建一个临时列表 tmp ,用于存储当前层打印结果;
ArrayList<Integer> temp = new ArrayList<>();
//此时队列的长度就是该集合的内容
for(int i = queue.size();i > 0; i--){
//将队列的头部元素弹出
TreeNode cur = queue.poll();
temp.add(cur.val);
//判断当前节点的左右子节点是否为空
//不为空则继续补入队列完成下一次循环
if(cur.left != null){
queue.add(cur.left);
}
if(cur.right != null){
queue.add(cur.right);
}
}
list.add(temp);
}
return list;
本文详细介绍了如何使用Java实现二叉树的广度优先搜索(BFS),通过队列数据结构逐层遍历并存储节点值,特别关注了初始处理和特例情况。
474

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



