See More

/** * 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> levelOrderBottom(TreeNode root) { List> result = new ArrayList>(); if (root == null) return result; Queue q1 = new LinkedList(); Queue q2 = new LinkedList(); List level = new ArrayList(); q1.add(root); while (!q1.isEmpty()) { TreeNode node = q1.remove(); level.add(node.val); if (node.left != null) q2.add(node.left); if (node.right != null) q2.add(node.right); if (q1.isEmpty()) { result.add(level); level = new ArrayList(); Queue temp = q1; q1 = q2; q2 = temp; } } List> reversed_result = new ArrayList>(); for (int i = result.size() - 1; i >= 0; i--) { reversed_result.add(result.get(i)); } return reversed_result; } }