/**
* 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>> res = new ArrayList<List<Integer>>();
if(root==null) return res;
Stack<List<Integer>> resStack = new Stack<List<Integer>>();
List<TreeNode> listNode = new ArrayList<TreeNode>();
List<Integer> listDepth = new ArrayList<Integer>();
List<Integer> tmpRes = new ArrayList<Integer>();
listNode.add(root);
listDepth.add(0);
int currentDepth = 0;
tmpRes.clear();
while(!listNode.isEmpty()){
TreeNode tmp = listNode.get(0);
int depth = listDepth.get(0);
if(depth!=currentDepth){
resStack.push(new ArrayList<Integer>(tmpRes));
currentDepth += 1;
tmpRes.clear();
}
tmpRes.add(tmp.val);
listNode.remove(0);
listDepth.remove(0);
if(tmp.left!=null){
listNode.add(tmp.left);
listDepth.add(depth + 1);
}
if(tmp.right!=null){
listNode.add(tmp.right);
listDepth.add(depth + 1);
}
}
resStack.push(tmpRes);
while(!resStack.isEmpty()){
res.add(resStack.peek());
resStack.pop();
}
return res;
}
}
* 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>> res = new ArrayList<List<Integer>>();
if(root==null) return res;
Stack<List<Integer>> resStack = new Stack<List<Integer>>();
List<TreeNode> listNode = new ArrayList<TreeNode>();
List<Integer> listDepth = new ArrayList<Integer>();
List<Integer> tmpRes = new ArrayList<Integer>();
listNode.add(root);
listDepth.add(0);
int currentDepth = 0;
tmpRes.clear();
while(!listNode.isEmpty()){
TreeNode tmp = listNode.get(0);
int depth = listDepth.get(0);
if(depth!=currentDepth){
resStack.push(new ArrayList<Integer>(tmpRes));
currentDepth += 1;
tmpRes.clear();
}
tmpRes.add(tmp.val);
listNode.remove(0);
listDepth.remove(0);
if(tmp.left!=null){
listNode.add(tmp.left);
listDepth.add(depth + 1);
}
if(tmp.right!=null){
listNode.add(tmp.right);
listDepth.add(depth + 1);
}
}
resStack.push(tmpRes);
while(!resStack.isEmpty()){
res.add(resStack.peek());
resStack.pop();
}
return res;
}
}