트리 순회 알고리즘 (Level Order Of Binary Tree)
2020. 9. 1. 17:39ㆍ자료구조 (Data Structure)
트리 순회 알고리즘 (Level Order Of Binary Tree)
- 이진트리의 순회 방법으로 트리의 레벨 순으로 순회 한다.
- 한 레벨의 모든 노드를 방문 하고, 다음 레벨을 방문한다.
INPUT 작성
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public class Example {
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.right.right = new TreeNode(7);
System.out.println(solve(root));
}
}
OUTPUT 작성
public class Algo {
public static List<List<Integer>> solve(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
// 매개변수의 값이 존재하지 않다면, 탈출
if (root == null) return result;
// 최상단 노드의 값 초기화
queue.offer(root);
// 큐가 비어 있지 않다면
while(!queue.isEmpty()) {
int size = queue.size(); // 1 -> 2 -> 2
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); // 큐에 추가
}
// Answer
result.add(list);
}
return result;
}
}
'자료구조 (Data Structure)' 카테고리의 다른 글
이분 탐색/이진 탐색 (Binary Search) - Java 코드 (0) | 2021.05.03 |
---|