欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

107二叉树的层次遍历II

程序员文章站 2022-05-20 19:09:51
...

题目描述

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

思路分析

还是层次遍历的写法,递归非递归都可。
最后用Collections.reverse()翻转list,或者在建立链表时用LinkedList,用addFirst的api,每次都在首部增加list。

代码实现

    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        LinkedList<List<Integer>> arrayLists = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            List<Integer> arrayList = new ArrayList<>();
            int size = queue.size();
            while (size-- > 0) {
                TreeNode tmp = queue.poll();
                if (tmp == null) {
                    continue;
                }
                arrayList.add(tmp.val);
                queue.offer(tmp.left);
                queue.offer(tmp.right);
            }
            if (arrayList.size() != 0) {
                arrayLists.add(arrayList);
                //arrayLists.addFirst(arrayList);
            }
        }
        Collections.reverse(arrayLists);
        return arrayLists;
    }