使用递归思想, 用整数n把握阶层数,取相应阶层的list,去添加每层的值
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> results = new ArrayList<>(10);
if(root != null){
ArrayList<Integer> first = new ArrayList<>();
first.add(root.val);
results.add(first);
detailOrder(root, 1, results);
}
return results;
}
private void detailOrder(TreeNode node, int n, ArrayList<ArrayList<Integer>> result) {
if(node.right ==null && node.left == null){
return;
}
ArrayList<Integer> levelNodes = null;
//取result中对应层数的list,如果初次到达该阶层,就新建一个list
if (n >= result.size()) {
levelNodes = new ArrayList<>();
result.add(levelNodes);
} else {
levelNodes = result.get(n);
}
if (node.left != null) {
levelNodes.add(node.left.val);
detailOrder(node.left, n + 1, result);
}
if (node.right != null) {
levelNodes.add(node.right.val);
detailOrder(node.right, n + 1, result);
}
}
}