Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DP
- 카카오
- 자바 5464
- dfs
- 프로그래머스 java
- 구현
- Java
- 코테
- 리트코드
- 분할정복
- 파이썬
- 코딩테스트
- java leetcode
- java 프로그래머스
- 스택
- 백준 18222
- 리트코드 자바
- leetcode
- 프로그래머스
- 자바 리트코드
- 리트코드 1557
- 스프링 에러
- daily challenge
- 그래프 자바
- 인텔리제이 에러
- 자바
- leetcode 1721
- BFS
- 백준
- 백준 16935
Archives
- Today
- Total
레벨업 일지
[Java] leetcode 103. Binary Tree Zigzag Level Order Traversal 본문
알고리즘/leetcode
[Java] leetcode 103. Binary Tree Zigzag Level Order Traversal
24시간이모자란 2023. 2. 19. 14:26문제
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/description/
알아야 할 개념
- BFS
풀이
풀이는 다음과 같다.
- 큐로 BFS를 구현한다.
- 해당 레벨 마다 노드를 큐에서 꺼내오고 꺼낸 값들을 리스트에 담는다.
- 레벨이 홀수 일때만 리버스 적용한다.
- 정답 배열에 리스트를 담는다.
- 정답을 리턴한다.
코드
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
Queue<TreeNode> Q = new LinkedList<>();
Q.offer(root);
int level = 0;
List<List<Integer>> ans = new ArrayList<>();
if(root == null)return ans;
while(!Q.isEmpty()){
int size = Q.size();
List<Integer> l = new ArrayList<>();
for(int i= 0 ;i < size;i ++){
TreeNode node = Q.poll();
l.add(node.val);
if(node.left != null)Q.offer(node.left);
if(node.right != null)Q.offer(node.right);
}
if(level % 2 != 0)Collections.reverse(l);
ans.add(l);
level++;
}
return ans;
}
}
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 997. Find the Town Judge (0) | 2023.02.23 |
---|---|
[Java] leetcode 37. Sudoku Solver (2) | 2023.02.20 |
[Java] leetcode 1523. Count Odd Numbers in an Interval Range (0) | 2023.02.13 |
[Java] leetcode 1626. Best Team With No Conflicts (0) | 2023.02.12 |
[Java] leetcode 1626. Best Team With No Conflicts (0) | 2023.02.01 |
Comments