LeetCode 매일 1문제: 두 갈래 나무 층계 훑어보기

1663 단어

문제 설명


Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example: Given binary tree{3,9,20,¥,¥,15,7}, 3/ 9 20/ 15 7
return its bottom-up level order traversal as: [ [15,7] [9,20], [3], ]
confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization: The serialization of a binary tree follows a level order traversal, where ‘¥’ signifies a path terminator where no node exists below. Here's an example: 1/ 2 3/4 5 The above binary tree is serialized as”{1,2,3,¥,¥,4,¥,¥,5}”.

문제 분석


이 문제는 표준적인 두 갈래 트리 차원을 두루 훑어보는 것으로 대열로 해결할 수 있습니다. 답안은 역순으로 출력해야 하기 때문에 매번add에서 0의 위치로 앞층을 뒤로 밀어내면 됩니다.

코드 구현

public ArrayList> levelOrderBottom(TreeNode root) {
        ArrayList> result = new ArrayList<>();
        if (root == null) return result;
        Queue queue = new LinkedList<>();
        queue.offer(root);
        while (queue.isEmpty() == false) {
            ArrayList list = new ArrayList<>();
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode curNode = queue.poll();
                list.add(curNode.val);
                if (curNode.left != null) queue.offer(curNode.left);
                if (curNode.right != null) queue.offer(curNode.right);
            }
            result.add(0, list);
        }
        return result;
    }

좋은 웹페이지 즐겨찾기