题目:
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7},
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
翻译:
给定一个二叉树,返回它的节点的从底部到头部的层序遍历结果。
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result=levelOrder(root);
Collections.reverse(result);
return result;
}
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result=new ArrayList<>();
if(root==null){
return result;
}
List<Integer> one=new ArrayList<>();
one.add(root.val);
result.add(one);
List<List<Integer>> left=levelOrder(root.left);
List<List<Integer>> right=levelOrder(root.right);
for(int i=0;i<left.size()||i<right.size();i++){
List<Integer> item=new ArrayList<>();
if(i<left.size()){
for(Integer k:left.get(i)){
item.add(k);
}
}
if(i<right.size()){
for(Integer k:right.get(i)){
item.add(k);
}
}
result.add(item);
}
return result;
}
}
时间: 2024-10-08 20:14:09