102. Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

Example

Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

 

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]
分析:
用两个ArrayList,一个保存当前这行所有的Node, 然后另一个数组保存下一行所有的nodes.
 1 /**
 2  * Definition of TreeNode:
 3  * public class TreeNode {
 4  *     public int val;
 5  *     public TreeNode left, right;
 6  *     public TreeNode(int val) {
 7  *         this.val = val;
 8  *         this.left = this.right = null;
 9  *     }
10  * }
11  */
12  
13  
14 public class Solution {
15     /**
16      * @param root: The root of binary tree.
17      * @return: Level order a list of lists of integer
18      */
19     public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
20         ArrayList<ArrayList<Integer>> allLists = new ArrayList<>();
21         if (root == null) return allLists;
22         
23         ArrayList<Integer> nums = new ArrayList<>();
24         ArrayList<TreeNode> list1 = new ArrayList<>();
25         ArrayList<TreeNode> list2 = new ArrayList<>();
26     
27         list1.add(root);
28     
29         while(list1.size() != 0) {
30             for (TreeNode node : list1) {
31                 nums.add(node.val);
32                 if (node.left != null) list2.add(node.left);
33                 if (node.right != null) list2.add(node.right);
34             } 
35             list1.clear();
36             allLists.add(new ArrayList<Integer>(nums));
37             nums.clear();
38             ArrayList<TreeNode> temp = list1;
39             list1 = list2;
40             list2 = temp;
41         }
42         return allLists;
43     }
44 }

 

 

 
posted @ 2016-07-07 12:30  北叶青藤  阅读(139)  评论(0)    收藏  举报