/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>> ();
if (root==null) return res;
ArrayList<Integer> level = new ArrayList<Integer> ();
int oldCnt = 1;
int newCnt = 1;
LinkedList<TreeNode> queue = new LinkedList<TreeNode> ();
queue.add(root);
while (!queue.isEmpty()) {
oldCnt = newCnt;
newCnt = 0;
for (int i=0; i<oldCnt; i++) {
TreeNode n = queue.removeFirst();
if (n.left!=null) {
queue.add(n.left);
newCnt++;
}
if (n.right!=null) {
queue.add(n.right);
newCnt++;
}
level.add(n.val);
}
res.add((ArrayList<Integer>) level.clone());
level.clear();
}
return res;
}
}
1. 用queue来保存node.
回复删除2. 用old count和new count记录上层和本层有几个node.