一层层遍历。
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> rearr=new ArrayList<List<Integer>>();
List<List<Integer>> rea=new ArrayList<List<Integer>>();
List<Integer> tre=new ArrayList<Integer>();
if(root==null)
return rearr;
List<TreeNode> t=new ArrayList<TreeNode>();
t.add(root);
tre.add(root.val);
rearr.add(tre);
addlo(rearr,t);
int len=rearr.size();
for(int i=0;i<len;i++)
{
rea.add(rearr.get(len-1-i));
}
return rea;
}
public static void addlo(List<List<Integer>> re,List<TreeNode> rel)
{
List<TreeNode> t=new ArrayList<TreeNode>();
List<Integer> tre=new ArrayList<Integer>();
if(rel.size()==0)
return ;
for(int i=0;i<rel.size();i++)
{
TreeNode temp=rel.get(i);
if(temp.left!=null)
{
t.add(temp.left);
tre.add(temp.left.val);
}
if(temp.right!=null)
{
t.add(temp.right);
tre.add(temp.right.val);
}
}
if(tre.size()!=0)
re.add(tre);
addlo(re,t);
}
}