方法一:
广度优先搜索(BFS),用一个辅助动态数组ArrayList,cur表示当前层结点个数,next表示下一层结点个数;
若只需要打印某层结点,则只需再设一个变量表示层数即可。
代码如下:
import java.util.*;
public class Solution {
public void levelOrder(TreeNode root) {
if(root == null)
return;
LinkedList<TreeNode> list=new LinkedList();
list.add(root);
int cur=1;//list中存储的二叉树当前层节点数;
int next=0;//list中存储的二叉树下一层节点数;
while(list.size()!=0)
{
TreeNode node=list.remove(0);
//process(node);该处对node进行操作,如打印,保存等;
cur--;
if(node.left!=null)
{
list.add(node.left);
next++;
}
if(node.right!=null)
{
list.add(node.right);
next++;
}
if(cur == 0)//当前层遍历结束,遍历下一层;
{
//若每层结束需要换行等在这里进行;
cur=next;
next=0;
}
}
}

本文详细介绍了如何利用广度优先搜索(BFS)算法来遍历二叉树,包括代码实现、核心逻辑以及如何在遍历时进行优化。通过引入辅助动态数组和层次划分的概念,作者提供了高效且易于理解的方法来解决二叉树的层级遍历问题。
3573

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



