[ 221130 ] 이진트리 , 스트림

최수정·2022년 11월 30일
0

멋쟁이사자처럼

목록 보기
13/14

💻 알고리즘

두 노드의 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을 하는 방식으로 거리를 구합니다.


💻 JABA_8

교재 - 자바인액션

⬛ 스트림


  • .filter()
    : filter() -> 이 안에는 predicate.test()가 생략되어 있다. true면 포함, false면 넘어간다.
 @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()

0개의 댓글