BFS - Queue 기본
class TreeNode{
int val;
TreeNode left,right;
TreeNode(int val){
this.val=val;
}
}
public class LevelOrderOfBinaryTree {
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
System.out.println(solution(root));
}
private static List<List<Integer>> solution(TreeNode tree) {
List<List<Integer>> result = new ArrayList<>();
if(tree==null) return result;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(tree);
while(!queue.isEmpty()){
List<Integer> list = new LinkedList<>();
int size = queue.size();
for(int i=0;i< size;i++){ // queue.size 를 받아놓고 할 때랑, queue.size()로 돌릴 때랑 결과가 다르다 poll 을 하는 순간 queue 의 size 가 변하기 때문에.
TreeNode pollNode = queue.poll();
list.add(pollNode.val);
if(pollNode.left!=null){
queue.offer(pollNode.left);
}
if(pollNode.right!=null){
queue.offer(pollNode.right);
}
}
result.add(list);
}
return result;
}
}
Author And Source
이 문제에 관하여(BFS - Queue 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@camel-man-ims/BFS-Queue-기본저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)