【leetcode】107.(Easy)Binary Tree Level Order Traversal II

解题思路:
递归


提交代码:

class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> res=new ArrayList<List<Integer>>();
        if(root==null)	return res;
        
        List<TreeNode> rootLayer=new ArrayList<TreeNode>();
        rootLayer.add(root);
        addSubLayer(rootLayer,res);
        List<Integer> rootVal=new ArrayList<Integer>();
        rootVal.add(root.val);
        res.add(rootVal);
        return res;
    }
    
    private void addSubLayer(List<TreeNode> curLayer,List<List<Integer>> res) {
    	List<TreeNode> sonLayer=new ArrayList<TreeNode>();
    	for(int i=0;i<curLayer.size();i++) {
    		if(curLayer.get(i).left!=null)
    			sonLayer.add(curLayer.get(i).left);
    		if(curLayer.get(i).right!=null)
    			sonLayer.add(curLayer.get(i).right);
    	}
    	
    	if(sonLayer.size()==0)
    		return;
    	else{
    		addSubLayer(sonLayer,res);
    		List<Integer> result=new ArrayList<Integer>();
    		for(int i=0;i<sonLayer.size();i++)
    			result.add(sonLayer.get(i).val);
    		res.add(result);
    	}
    }
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/85334073