用栈接住层次遍历每一层的一维数组结果,然后再弹栈形成最终要返回的二维数组结果
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
public int[][] levelOrderBottom (TreeNode root) {
// write code here
Stack<int[]> stack = new Stack<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int queueSize = queue.size();
int[] layer = new int[queueSize];
for(int i = 0; i < queueSize; i++){
TreeNode node = queue.poll();
layer[i] = node.val;
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
stack.push(layer);
}
int row = 0;
int[][] res = new int[stack.size()][];
while(!stack.isEmpty()){
res[row] = stack.pop();
row ++;
}
return res;
}
}
出自牛客网