public class levelTraversal { public static class TreeNode { public int val; public TreeNode left; public TreeNode right; TreeNode(int val) { this.val = val; } } public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> ans = new LinkedList<>(); if (root == null) { return ans; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(root);//将根节点加入队列 while (!queue.isEmpty()) {//如果队列当前不为空执行 int size = queue.size();//队列里当前有几个元素执行几次 List<Integer> curAns = new LinkedList<>();//新建一个链表,用来存储遍历出的结点值(一层5) for (int i = 0; i < size; i++) { TreeNode curNode = queue.poll();//从队列中取出队头元素 curAns.add(curNode.val);//将取出的元素的值存入链表 if (curNode.left != null) {//当前元素存在左子树 queue.add(curNode.left); } if (curNode.right != null) {//当前元素存在右子树 queue.add(curNode.right); } } ans.add(0, curAns); } return ans; } }