方法一:
广度优先搜索(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;
}
}
}