05_二叉树的层次遍历II

发布时间 2023-11-16 15:23:24作者: 鲍宪立

二叉树的层序遍历 II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例 1:

img

输入: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;
    }
}