leetcode107(二叉树的层次遍历II:DFS深搜)

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:
给定二叉树 [3,9,20,null,null,15,7],

返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]

题解:利用DFS深搜+哈希存储,DFS深搜进行遍历二叉树,利用哈希表存储每一层的结点。

class Solution {
    
    
     int layerTotal=0;
     List<List<Integer>>res=new ArrayList<>();
     public List<List<Integer>> levelOrderBottom(TreeNode root) {
    
    
        Map<Integer,List<Integer>>map=new HashMap<>();
        DFS(map,1,root);
        for(int i=layerTotal;i>=1;i--){
    
    
            if(map.containsKey(i)) 
                res.add(map.get(i));
        }
        return res;
     }
    private void DFS(Map<Integer,List<Integer>>map,int layer,TreeNode node){
    
    
        if(node==null)
            return;
        layerTotal=Math.max(layer,layerTotal);
        List<Integer>temp=map.getOrDefault(layer,new ArrayList<>());
        temp.add(node.val);
        map.put(layer,temp);
        DFS(map,layer+1,node.left);
        DFS(map,layer+1,node.right);
    }
}

猜你喜欢

转载自blog.csdn.net/CY2333333/article/details/108427540