解题思路:完全利用了图的广度优先遍历,即利用队列先进先出的特点,但这里二叉树的层序遍历,麻烦的是需要区分每层的节点到底是哪几个(为了同层节点的值加入一个list中)。保证每次迭代后,队列中只剩下----下一次要遍历的那一层节点的数据。每层在队列中的节点,它们出队的时候,同时将自己的左右子节点入队,为下一层遍历服务。
class Solution {
//为了区分每层的节点:确保每次迭代结束后,一个队列中只有本层的节点,
//这样方便遍历本层的节点,来进一步遍历完下一层的节点
public List> levelOrder(TreeNode root) {
List> container=new ArrayList>();
linkedList queue=new linkedList<>();
if(root==null){
return container;
}
//初始化队列
queue.offer(root);
while(!queue.isEmpty()){
List list=new ArrayList<>();
int currentLevelNum=queue.size();//本层节点数
//将本层队列中的节点按照从左往右一一出队,出队的时候同时将自己的左右子节点入队,为下一层遍历服务
//区分层的原因是,为了分割出一层的列表值
for(int i=0;i
相较于原来只是加入大容器的顺序相反
container.add(0,list);//每次将列表的值添加在列表的头部



