[Programmers] 12. 기본 자료구조: 트리 (Tree) (1): 트리의 기본 용어

illstandtall·2021년 4월 29일
0

Programmers dev course

목록 보기
13/34
post-thumbnail

오류에 대한 지적이나 질문, 토의 환영합니다. 자유롭게 댓글 남겨주세요!.!


자료구조 5. 트리 (Tree)

  • 정점(node)과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료구조입니다.
  • 그래프 중에서도 순환이 없는 그래프이기도 합니다.
  • 뿌리(root) 노드에서부터 간선들이 마치 나무에서 뿌리로부터 잔가지로 뻗어나가듯이 가지치기된 구조를 말합니다.


트리 용어

  • 루트노드 (Root Node)
    • 트리의 시작점을 말합니다.
    • 위 그림에서는 노드 AA가 해당합니다.
  • 단말(리프)노드 (Leaf Node)
    • 트리의 가장 마지막 단계입니다. 더이상 가지치기를 할 수 없는 노드입니다.
    • 위 그림에서는 노드 K,L,F,G,M,I,JK, L, F, G, M, I, J를 말합니다.
  • 내부 노드(Internal Node)
    • 루트도 아니고 단말도 아닌 노드를 말합니다.
    • 위 그림에서는 노드 E,B,C,H,DE, B, C, H, D가 해당합니다.
  • 부모와 지식관계
    • 부모 노드 (Parent Node)
      • 루트에 더 가까운 노드입니다.
      • 위 그림에서 노드 DD의 부모 노드는 노드 AA입니다.
    • 자식 노드 (Child Node)
      • 루트에서 조금 더 먼 노드입니다.
      • 위 그림에서 노드 DD의 자식 노드는 노드 H,I,JH, I, J입니다.
    • 형제 노드 (sibling)
      • 같은 부모 노드를 공유하는 노드를 말합니다.
      • 위 그림에서 노드 B,C,DB, C, D는 형제 노드 입니다.
    • 조상 (ancestor)
      • 노드 자신의 모든 부모 노드를 말합니다.
      • 위 그림에서 노드 MM의 조상은 노드 H,D,AH, D, A입니다.
    • 후손 (descendant)
      • 노드 자신의 모든 자식 노드를 말합니다.
      • 위 그림에서 노드 DD의 후손은 노드 H,I,J,MH, I, J, M입니다.
  • 노드의 수준 (Level)
    • 루트 노드의 수준이 0을 기준으로 하여, 대를 거듭할 수록 수준이 높아집니다.
    • 위 그림에서 노드 AA의 Level은 0 입니다.
    • 위 그림에서 노드 B,C,DB, C, D의 Level은 1 입니다.
    • 위 그림에서 노드 E,F,G,H,I,JE, F, G, H, I, J의 Level은 2 입니다.
    • 위 그림에서 노드 K,L,MK, L, M의 Level은 3 입니다.
  • 트리의 높이 (height)/ 깊이 (depth)
    • 최대 수준(level) + 1
    • 위 그림에서 전체 트리의 깊이는 4 입니다.
  • 부분 트리 (Sub-Tree)
    • 특정한 노드를 기준(루트 노드)으로 기준 노드와 모든 후손을 아우르는 부분 트리를 만들 수 있습니다.
    • 위 그림에서 노드 BB를 루트 노드로 본다면, 노드 BB와 아래로 연결된 트리를 서브 트리라고 할 수 있습니다.
  • 노드의 차수 (Degree)
    • 노드의 자식(서브트리)의 수 입니다.
    • 위 그림에서 노드 BB는 노드 E,FE, F와 연결되어 있으므로 차수는 2입니다.
    • 단말 노드는 차수가 0입니다.

이진 트리 (Binary Tree)

  • 모든 노드의 차수가 2 이하인 트리입니다.
  • 이진 트리는 재귀적으로 정의할 수 있습니다.
    • 이진 트리는 항상
      • 빈 트리 이거나
      • 루트 노드 + 왼쪽 서브 트리 + 오른쪽 서브 트리로 정의할 수 있습니다.

포화 이진 트리 (Full Binary Tree)

  • 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리입니다.
  • 높이/깊이가 kk이고, 노드의 개수가 2k12^k-1인 이진 트리를 말합니다.

  • 포화 이진 트리


완전 이진 트리 (Complete Binary Tree)

  • 높이/깊이가 kk인 완전 이진 트리입니다.
    • 레벨 k-2까지는 포화 이진트리이고,
    • 레벨 k-1부터는 왼쪽에서부터 채워져 있습니다.

  • 완전 이진 트리


이 글은 프로그래머스 스쿨 인공지능 데브코스 과정에서 공부한 내용을 바탕으로 정리한 글입니다.

profile
주니어

0개의 댓글