Step-by-Step

[Java] Daily LeetCode Challenge 103. Binary Tree Zigzag Level Order Traversal 본문

언어/JAVA

[Java] Daily LeetCode Challenge 103. Binary Tree Zigzag Level Order Traversal

희주(KHJ) 2023. 2. 19. 22:30

https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/

 

Binary Tree Zigzag Level Order Traversal - LeetCode

Binary Tree Zigzag Level Order Traversal - Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between).   Example 1: [https://assets

leetcode.com

 

DFS를 이용해서 탐색하고, 각 level 별로 ArrayList를 만들어 넣어주면된다.

 

탐색이 끝난 후 홀수 레벨에 있는 노드 값들을 Reverse 해준 후 제출하면 끝!

 

 

[코드]

class Solution {
    public List<List<Integer>> ans = new ArrayList<>();
    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        if(root==null)
            return ans;

        ans.add(new ArrayList<>());
        setTree(root, 0);

        for(int i=1; i<ans.size(); i+=2){
            List<Integer> list = ans.get(i);
            Collections.reverse(list);
        }

        return ans;
    }

    public void setTree(TreeNode node, int level){
        if(max < level){
            max = level;
            ans.add(new ArrayList<>());
        }

        List<Integer> arr = ans.get(level);
        arr.add(node.val);

        if(node.left != null)
            setTree(node.left, level+1);

        if(node.right != null)
            setTree(node.right, level+1);
    }
}
Comments