트리 (구성 요소, 이진 트리, 세그먼트 트리, 인덱스 트리, 최소공통 조상 LCA)

2023. 3. 23. 16:59·Coding Test/Tree
728x90

➊ 특징

  • 노드와 에지로 연결된 그래프의 특수한 형태
  • 그래프의 표현으로도 트리를 표현할 수 있음
  • 순환구조 X, 1개의 루트노드
  • 루트노드를 제외한 노드는 1개의 부모노드를 가짐
  • 트리의 부분 트리 역시 토리의 모든 특징을 따름
 

그래프의 표현 및 비교 (간선 리스트, 인접 행렬, 인접 리스트)

간선 리스트 인접 행렬 인접 리스트 중심 간선 노드 노드 시간복잡도 - 느림 빠름 구조 [] d[시작노드][종료노드] d[시작노드] 입력 (시작노드 ,도착노드, 가중치) 가중치 (도착노드, 가중치) 알고리

karla.tistory.com

 

 

➋ 트리의 구성요소

구성요소 설명
노드 데이터의 index와 value를 표현하는 요소
에지 노드와 노드의 연결 관계를 나타내는 선
루트 노드 트리에서 가장 상위에 존재하는 노드
부모 노드 두 노드 사이의 관계에서 상위 노드에 해당하는 노드
자식 노드 두 노드 사이의 관계에서 하위 노드에 해당하는 노드
리프 노드 트리에서 가장 하위에 존재하는 노드(자식 노드가 없는 노드)
서브 트리 전체 트리에 속한 작은 트리

 

➌ 코딩테스트에서 트리

  1. 그래프로 푸는 트리 ➜ 노드, 에지
    • 인접리스트로 표현
    • DFS, BFS
  2. 트리만을 위한 문제
    • 1차원 배열로 표현
    • 이진트리
    • 세그먼트 트리(index트리)
    • LCA(최소공통조상)

 

➍ 이진트리

  • 각 노드의 자식 노드(차수)의 개수가 2이하로 구성돼 있는 트리
  • 편향 이진 트리, 포화 이진 트리, 완전 이진 트리
  • 리스트로 표현
  • 🌟 인덱스 연산 방식 :  세그먼트 트리, LCA 알고리즘

 

 

이동 목표 노드 인덱스 연산 제약조건(N=노드갯수)
루트 노드 index = 1  
부모 노드 index = index / 2 현재 노드가 루트 노드가 아님
왼쪽 자식 노드 index = index ∗ 2 index ∗ 2 ≤ N
오른쪽 자식 노드 index =index ∗ 2 + 1 index ∗ 2 + 1 ≤ N

 

➎ 세그먼트 트리

 

세그먼트 트리, 인덱스 트리, 구간합

1. 세그먼트 트리 주어진 데이터의 구간합과 데이터 업데이트를 빠르게 수행하기 위해 고안해낸 자료구조 2. 구간합 합배열(prefix sum)은 업데이트가 느림 arr[1]를 update 한다면 ? sum[1]부터 sum[9]까지

karla.tistory.com

➏ 최소 공통 조상

 

[11437] 최소 공통 조상 (트리, LCA)

11437번: LCA 첫째 줄에 노드의 개수 N이 주어지고, 다음 N-1개 줄에는 트리 상에서 연결된 두 정점이 주어진다. 그 다음 줄에는 가장 가까운 공통 조상을 알고싶은 쌍의 개수 M이 주어지고, 다음 M개

karla.tistory.com

 

최소 공통 조상 빠르게 구하기 (트리, 제곱수 LCA, LCA 시간초과)

최소 공통 조상 빠르게 구하기 서로 깊이를 맞춰주거나 같아지는 노드를 찾을 때 기존에 한 단계씩 올려주는 방식에서 2ᵏ씩 올라가 비교하는 방식 기존에 자신의 부모 노드만 저장해 놓던 방식

karla.tistory.com

 

728x90
'Coding Test/Tree' 카테고리의 다른 글
  • [2042번] 구간합 구하기 (세그먼트 트리, 리프노드, 값 변경)
  • [11438번] 최소 공통 조상 구하기 (트리, 제곱수 LCA, LCA 시간초과)
  • 최소 공통 조상 빠르게 구하기 (트리, 제곱수 LCA, LCA 시간초과)
  • 세그먼트 트리, 인덱스 트리, 구간합
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    그리디
    DP
    다익스트라
    월간코드챌린지
    그래프
    동적계획법
    스택
    조합
    구현
    LIS
    플로이드워셜
    최단거리
    이분탐색
    정렬
    큐
    DFS
    알고리즘
    파이썬
    트리
    최소신장트리
    최대공약수
    구간합
    재귀
    덱
    백준
    BFS
    자료구조
    힙
    Algorithm
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
트리 (구성 요소, 이진 트리, 세그먼트 트리, 인덱스 트리, 최소공통 조상 LCA)
상단으로

티스토리툴바