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

相关推荐

从24年初开学开始接触到前端,和实验室几个同学一起学习,可似乎我总比他们慢一步,每每学完一个地方,我掌握的程度好像都不比他们,第一次实验室的任务实战,我两眼一抹黑,完全不知道从何下手,而他们却是游刃有余,可我当时没有丧气,只有一个念头,既然学习能力不如他们,那我就拿更多的时间去学,于是我把打游戏,运动锻炼的时间也拿来学习。到了暑假,实验室一起做项目,为了可以更好的参与进去,于是我暑假开始留校和同学师哥一起做项目,每天早上九点多去实验室,晚上十点多回宿舍,校田径队的训练没有去,中间也只回家待了一周。到暑假结束开学之后,一位很优秀的师哥拿到了几个offer,我从他身上看到了希望,双非本科就业的希望...
offer求求哩:我的评价是认知低,建议多看书,认知低的一个表现是人生仿佛没考上大学就是进厂,考上了就是考研考公找工作。股市里有一个很有意思的故事,说的是当门口大妈都在谈论股票的时候,说明行情已经见顶了。当你的父母在某些事上没有成功却支持你说明事情可能已经不可靠了,但在某些事上反对你,说明这件事可能还有成功的可能。(仅个人观点)😆😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务