题目描述:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]。
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii
我的解答:
执行用时 :
1 ms, 在所有 java 提交中击败了100.00%的用户
内存消耗 :36 MB, 在所有 java 提交中击败了59.49%的用户
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> ans=new ArrayList<>();
if(root==null){
return ans;
}
List<Integer> first=new ArrayList<>();
ans.add(first);
func(ans,0,root);
return ans;
}
private void func(List<List<Integer>> lists,int level,TreeNode node){
if(node==null){
return;
}
if(lists.size()==level){
List<Integer> list=new ArrayList<>();
list.add(node.val);
lists.add(0,list);
}else{
lists.get(lists.size()-1-level).add(node.val);
}
func(lists,level+1,node.left);
func(lists,level+1,node.right);
}
}