题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
解题思路: 此题考查了对二叉树的层次遍历和递归的用法,层次递归最初想到的是队列来解决,但是很久没有找到思路,然后看到别人题解递归每个子树解决问题要简单一些。
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
if(root == null){
return res;
}
count(root,0);
return res;
}
public void count(TreeNode node, int level){
if(level == res.size()){
res.add(new ArrayList<Integer>());
}
ArrayList<Integer> list = res.get(level);
list.add(node.val);
if(node.left != null){
count(node.left, level+1);
}
if(node.right != null){
count(node.right, level+1);
}
}
}