题解 | #求二叉树的层序遍历# 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);
    }
}
全部评论

相关推荐

努力跨行专业的老菜鸡:cxmt给开了31k但是华子开了24k,这两个价格让我纠结要不要毁约cxmt去华为
点赞 评论 收藏
分享
2024-12-10 19:11
重庆大学 Java
August_Li:主管面要是真挂了,你黑化更彻底😂
点赞 评论 收藏
分享
01-31 22:26
已编辑
杭州电子科技大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务