위와 같은 이진 트리가 있다고 생각해보자.
Queue를 이용하여 풀어야한다.
계층 별로 리스트에 담아 리턴해야 한다.
result : [[7],[2,9],[1,5,14]]
이런 식의 답이 나와야 한다.
package stack_queue;
import java.util.*;
class TreeNode{
int val;
TreeNode left, right;
TreeNode(int x){
this.val = x;
}
}
public class BinaryTree_Level_Order {
//Queue
public static void main(String[] args){
TreeNode root = new TreeNode(3);
root.left = new TreeNode(4);
root.right = new TreeNode(5);
root.left.left = new TreeNode(6);
root.left.right = new TreeNode(7);
System.out.println(solve(root));
}
public static List<List<Integer>> solve(TreeNode root){
List<List<Integer>> result = new ArrayList();
if(root==null){
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
//2
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> list = new LinkedList<>();
for(int i=0; i<size; i++){
TreeNode node = queue.poll(); //값을 뺀다.
list.add(node.val);
if(node.left != null){
queue.offer(node.left);
}
if(node.right != null){
queue.offer(node.right);
}
}
result.add(list);
}
return result;
}
}