题目:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
求解:使用深度优先遍历,并且记录当前所在的层次.
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); }