题目

类型:BFS

难度:中等

image.png

解题思路

使用广度优先搜索实现。
为了降低在结果列表的头部添加一层节点值的列表的时间复杂度,结果列表可以使用链表的结构

代码

  1. class Solution {
  2. public List<List<Integer>> levelOrderBottom(TreeNode root) {
  3. List<List<Integer>> levelOrder = new LinkedList<List<Integer>>();
  4. if (root == null) {
  5. return levelOrder;
  6. }
  7. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  8. queue.offer(root);
  9. while (!queue.isEmpty()) {
  10. List<Integer> level = new ArrayList<Integer>();
  11. int size = queue.size();
  12. for (int i = 0; i < size; i++) {
  13. TreeNode node = queue.poll();
  14. level.add(node.val);
  15. TreeNode left = node.left, right = node.right;
  16. if (left != null) {
  17. queue.offer(left);
  18. }
  19. if (right != null) {
  20. queue.offer(right);
  21. }
  22. }
  23. levelOrder.add(0, level);
  24. }
  25. return levelOrder;
  26. }
  27. }