107二叉树的层次遍历II

题目描述

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

思路分析

还是层次遍历的写法,递归非递归都可。
最后用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;
    }
发布了117 篇原创文章 · 获赞 8 · 访问量 3696

猜你喜欢

转载自blog.csdn.net/qq_34761012/article/details/104578433