두 노드의 LCA 찾기
https://codeup.kr/problem.php?id=1936
비선형의 자료구조, 이진트리는 자식(노드)이 왼쪽과 오른쪽 2개만 있는 트리이다.
❓ Heap이란
이진트리구조를 사용하며, 항상 부모가 자식보다 작거나 or 항상 부모가 자식보다 큰 이진트리
GC Garbage Collect -> new 해서 쓰고난 클래스들을 정리하는 것
넓이 우선 탐색의 경우,
부모가 1이면 왼쪽 자식은 2 오른쪽 자식은 3 입니다.
부모가 2이면 왼쪽 자식은 4 오른쪽 자식은 5 입니다.
부모가 3이면 왼쪽 자식은 6 오른쪽 자식은 7 입니다.
…
부모가 N이면 왼쪽 자식은 2N+1
오른쪽 자식은 2N+2
입니다.
그래서 부모를 찾고자 한다면 예를들어 4의 부모는 2 이고 5의 부모도 2인 상황에서
Math.floorDiv(4, 2)
, Math.floorDiv(5,2)
를 하면 각각 2가 나와서 부모를 찾을 수 있습니다.
노드 a와 노드 b가 형제라면 부모가 같은 것입니다. 그래서 노드 4와 노드 5는 부모가 2로 같기 때문에 형제 입니다.
핵심로직
부모가 같을때까지 부모를 찾으면서 한칸 올라갈때마다 +1을 하는 방식으로 거리를 구합니다.
교재 - 자바인액션
.filter()
@Test
void predicateTest() {
// 숫자 num을 넣으면 10보다 큰지 true, false로 리턴 해주는 내장 인터페이스
Predicate<Integer> predicate = num -> num > 10;
System.out.println(predicate.test(10));
}
.map()
: 타입을 Collection단위로(ex List) 바꿀 수 있습니다.
실습 : teachers에서 isLikeSpringBoot()이 true인 선생님의 이름의 자릿수를 List로 바꿔보세요 List —-> List
.reduce()