思路:
1、利用一个队列结构
2、第一层入队
3、第一层出队同时下层入队,依次类推
4、直到最后一层为空,则队列为空,结束
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { //存放最终结果集 ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if(root==null) return result; //需要借助一个队列结构 Queue<TreeNode> queue = new LinkedList<TreeNode>(); //根结点入队 queue.offer(root); while(!queue.isEmpty()){ //存放每一层的节点 ArrayList<Integer> floor = new ArrayList<Integer>(); //本次要出队的节点数量 int len = queue.size(); for(int i=0;i<len;i++){ //上层节点 TreeNode temp = queue.poll(); floor.add(temp.val); //下层节点入队 if(temp.left!=null) queue.offer(temp.left); if(temp.right!=null) queue.offer(temp.right); } //保存当前层结果 result.add(floor); } return result; } }