题解 | #求二叉树的层序遍历# java 递归
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
递归解决问题,标记层数
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
static Map<Integer, ArrayList<Integer>> map = new HashMap<>();
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
int level = 0;
getNodeVal(root, level);
//封装map到list
ArrayList<ArrayList<Integer>> resultList = new ArrayList<>();
for (int i = 0; i < map.size(); i++) {
resultList.add(map.get(i));
}
return resultList;
}
private void getNodeVal(TreeNode root, int level) {
//判断退出遍历的条件
if(root == null) {
return ;
}
//将值塞入对应的层次list
ArrayList<Integer> tempList = map.get(level);
if(Objects.isNull(tempList)) {
tempList = new ArrayList<>();
}
tempList.add(root.val);
map.put(level, tempList);
//遍历下一层
++level;
getNodeVal(root.left, level);
getNodeVal(root.right, level);
}
}