📌 문제
- 자식 노드들의 값을 level별로 묶고, 순회하면서 출력할 것.
https://leetcode.com/problems/binary-tree-level-order-traversal/submissions/
📌 문제 풀이
📌 코드
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
* date : 21.11.29
* link : https://leetcode.com/problems/binary-tree-level-order-traversal/
* memo : 강좌 위치로는 queue / stack 에 존재
*/
public class MainV2 {
public static void main(String[] args) {
TreeNode node = new TreeNode(3);
node.left = new TreeNode(9);
node.right = new TreeNode(20);
node.right.left = new TreeNode(15);
node.right.right = new TreeNode(7);
Solution solution = new Solution();
solution.levelOrder(node);
}
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
static class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
if(root==null) return new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> result = new ArrayList<>();
queue.offer(root);
while(!queue.isEmpty()){
List<Integer> list = new ArrayList<>();
int size = queue.size();
while(size -- >0){
TreeNode poll = queue.poll();
list.add(poll.val);
if(poll.left !=null){
queue.offer(poll.left);
}
if(poll.right !=null){
queue.offer(poll.right);
}
}
result.add(list);
}
return result;
}
}
}
댓글