class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> data = new ArrayList<List<Integer>>();
travel(data, root, 0);
return data;
}
private void travel(List<List<Integer>> data, TreeNode root, int level) {
if (root == null) {
return;
}
// The first time to travel one layer, need to create a new list.
if (level == data.size()) {
data.add(new ArrayList<Integer>());
}
data.get(level).add(root.val);
travel(data, root.left, level + 1);
travel(data, root.right, level + 1);
}
}