题目:

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

 求解:使用深度优先遍历,并且记录当前所在的层次.

public List<List<Integer>> levelOrderBottom(TreeNode root){
    List<List<Integer>> ans=new ArrayList<List<Integer>>();
    DFS(root,0,ans);
        eturn ans;
}

public void DFS(TreeNode root,int level,List<List<Integer>> ans) {
    if(root==null) {
        return;
    }
    //如果list中的大小小于层数,需要new一个新的列表
    if(ans.size()<=level) {
        ans.add(0,new ArrayList<Integer>());
    }
        
    ans.get(ans.size()-1-level).add(root.val);
    DFS(root.left, level+1, ans);
    DFS(root.right, level+1, ans);
}

 

posted on 2019-10-31 08:52  wyhluckydog  阅读(149)  评论(0)    收藏  举报