二叉树的层序遍历 II
给你二叉树的根节点 root
,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1] 输出:[[1]]
示例 3:
输入:root = [] 输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内 -1000 <= Node.val <= 1000
/ * 解法:队列,迭代。 * 层序遍历,再翻转数组即可。 / class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> list = new ArrayList<>(); Queue<TreeNode> que = new LinkedList<>(); if (root == null) return list; que.offer(root); while (!que.isEmpty()) { List<Integer> levelList = new ArrayList<>(); int size = que.size(); while(size > 0) { TreeNode peek = que.poll(); levelList.add(peek.val); if (peek.left != null) que.offer(peek.left); if (peek.right != null) que.offer(peek.right); size--; } list.add(levelList); } List<List<Integer>> result = new ArrayList<>(); for (int i = list.size()-1; i >= 0; i--) { result.add(list.get(i)); } return result; } }