题目链接:binary-tree-level-order-traversal-ii
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
*
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},
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
*
*/
public class BinaryTreeLevelOrderTraversalII {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
// 34 / 34 test cases passed.
// Status: Accepted
// Runtime: 237 ms
// Submitted: 0 minutes ago
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> traversal = new ArrayList<List<Integer>>();
if(root == null) return traversal;
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while(!queue.isEmpty()) {
int levelLen = queue.size();
List<Integer> levelNodes = new ArrayList<Integer>();
for (int i = 0; i < levelLen; i++) {
TreeNode node = queue.removeFirst();
levelNodes.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
traversal.add(0, levelNodes); //*头插法 和正常层次遍历的不同
}
return traversal;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}