二叉树的层序遍历:
- 1,递归,向遍历父节点,然后遍历子节点
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if(root == null) {
return res;
}
level(res,root,0);
return res;
}
private void level(ArrayList<ArrayList<Integer>> res, TreeNode node, int level) {
if (res.size() == level) {
res.add(new ArrayList<Integer>());
}
ArrayList<Integer> levelRes = res.get(level);
levelRes.add(node.val);
if (node.left != null) {
level(res,node.left,level+1);
}
if (node.right != null) {
level(res,node.right,level+1);
}
}