Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / 9 20 / 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
层序遍历 利用queue
1 class Solution { 2 public List<List<Integer>> levelOrder(TreeNode root) { 3 List<List<Integer>> res = new ArrayList<List<Integer>>(); 4 Queue<TreeNode> queue = new LinkedList<TreeNode>(); 5 if(root==null) return res; 6 queue.add(root); 7 while (!queue.isEmpty()) { 8 int levlnum = queue.size(); 9 List<Integer> res_temp = new ArrayList<Integer>(); 10 for (int i = 0;i<levlnum ;i++ ){ //把每层的左右节点都保存到queue里 11 //并讲当层的值从queue里弹出,加到res_temp 中 12 if(queue.peek().left!=null) queue.add(queue.peek().left); 13 if(queue.peek().right!=null) queue.add(queue.peek().right); 14 15 res_temp.add(queue.poll().val); 16 } 17 res.add(res_temp); 18 } 19 return res; 20 } 21 }