手撸代码-二叉树的层序遍历

二叉树的层序遍历:

  • 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);
        }
    }

Guess you like

Origin blog.csdn.net/epitomizelu/article/details/119996533