/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ classSolution{ public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(root == null) return res;
Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while(! queue.isEmpty()){ //获取当前层的结点数 int len = queue.size(); List<Integer> level = new ArrayList<>(); for(int i = 0; i < len; ++i){ //取出队头结点,将其加入当前层的结果中 TreeNode t = queue.poll(); level.add(t.val); //如果有左右子结点,将它们加入队尾 if(t.left != null) queue.add(t.left); if(t.right != null) queue.add(t.right); } //保存每一层的结果 res.add(level); } return res; } }