ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트리
    Data Structure & Algorithm 2022. 3. 27. 21:44

    정의

    방향 그래프의 일종으로 정점을 가리키는 간선이 하나밖에 없는 자료 구조


    용어

    • Root: 가장 상위의 정점
    • Node: 각 정점
    • Leaf Node: 자식이 없는 노드
    • Level: Root 부터 몇 번째 깊이(단계)에 위치해 있는 지 표시
    • Degree: 한 정점에서 뻗어 나가는 간선의 수

    특징

    • 루트 정점을 제외한 모든 정점은 반드시 하나의 부모 정점을 가짐
    • 정점이 N 개인 트리는 반드시 N-1 개의 간선을 가짐
    • 루트에서 특정 정점으로 가는 경로는 유일함
    • 실생활 예: 조직도, 디렉토리 구조

    이진 트리

    • 각 정점이 최대 2개의 자식을 갖는 트리
    • 완전 이진 트리: 마지막 레벨을 제외하고 모든 정점이 채워져 있는 트리
    • 포화 이진 트리: 마지막 레벨까지 모두 채워져 있는 트리
    • 편향 트리: 한 방향으로만 정점이 이어지는 트
    • 탐색을 위한 알고리즘에서 많이 사용됨

    이진 트리 특징

    • 정점이 N 개인 이진 트리는 최악의 경우 높이가 N이 될 수 있음
    • 정점이 N 개인 포화/완전 이진 트리의 높이는 log N 이 됨
    • 높이가 n 인 포화 이진 트리는 2ⁿ - 1 개의 정점을 가짐
      이진법을 생각하면 편함
    • 일반적으로 이진 트리를 사용하는 경우는 많지 않고
      이진 탐색 트리, 힙, AVL 트리, 레드 블랙 트리 등의 구현에 사용되는 경우가 많음

    트리 구현 방법

    그래프와 마찬가지로 인접 행렬, 인접 리스트 두 가지 방식으로 트리 표현 가능


    이진 트리 구현 방법

    • 배열 혹은 요소에 링크가 2개 존재하는 연결 리스트로 구현
    • 자식의 수가 2개 이하이기 때문에 조금 더 최적화된 방식으로 구현 가능

    Javascript 배열로 이진 트리 구현

    • 0번 인덱스는 편의를 위해 undefined
    • Left = Index * 2
    • Right = Index * 2 + 1
    • Parent = Math.floor(Index / 2)
    • 연결 리스트로 구현 시 기존 연결 리스트의 next 를 left, right 로 바꾸어서 표현

    'Data Structure & Algorithm' 카테고리의 다른 글

    BFS, DFS  (0) 2022.03.29
      (0) 2022.03.27
    그래프  (0) 2022.03.27
    해시 테이블  (0) 2022.03.27
      (0) 2022.03.24

    댓글

Designed by Tistory.