[Algorithm/java] BinaryTree_Level_Order
Problem
위와 같은 이진 트리가 있다고 생각해보자.
Queue를 이용하여 풀어야한다.
계층 별로 리스트에 담아 리턴해야 한다.
result : [[7],[2,9],[1,5,14]]
이런 식의 답이 나와야 한다.
Code
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;
}
}
📌 KeyNote
- LinkedList를 이용하여 다음 숫자를 아는 방식으로.
- queue.poll()로 값을 빼자.
- queue.offer(node.left) <- 형태로 다음 큐를 제공하자.
Author And Source
이 문제에 관하여([Algorithm/java] BinaryTree_Level_Order), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaeyunn_15/Algorithmjava-BinaryTreeLevelOrder저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)