트리(Tree)

2024. 1. 17. 17:42·공부하기/자료구조

트리의 정의

  • 사이클 없이 모든 정점이 연결되어 있는 그래프이다. (따라서 정점이 V개면 간선의 개수는 V-1개)
  • 노드(정점)와 노드를 연결하는 링크(간선)들로 구성되어 있다.
  • 보통 루트 노드가 존재하는 트리를 트리라 부르고 사용한다.
    • Root(루트)라고 불리는 노드가 하나 존재한다.
    • 루트 노드는 0개 이상의 자식 노드를 가진다.
    • 나머지 노드들은 n(>=0)개의 서브 트리(부분집합)로 이루어져있다.
    • 트리 안에 서브 트리가 있고, 서브 트리 안에 또 서브 트리가 있는 재귀적 자료구조이다.

출처: https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%A6%AC_%EA%B5%AC%EC%A1%B0

 

위 이미지에서 루트 노드는 2이며, 7과 5를 자식 노드로 가진다.

각 7과 5노드를 시작으로 서브트리가 구성되어 있으며, 각 서브트리에서 7과 5는 루트 노드의 역할을 한다.

 

트리는 자료의 계층적 구조를 표현할 때 사용된다.

예를 들어 가계도, 회사의 조직도, 컴퓨터의 폴더 구조 등을 나타낼 때 사용할 수 있다. 

 

트리 관련 용어

헷갈리는 용어들을 확실히 정리하자.

출처: https://velog.velcdn.com/images%2Ftsts_%2Fpost%2F0820c386-b28e-46e3-bb4f-faf7e78ec56f%2Fimage.png

노드

단말 노드(leaf/terminal node)

: 자식이 없는 노드, 가장 끝 노드

(ex. H, I, J, F, G)

 

내부 노드(internal node)

: 단말 노드가 아닌 노드

 

노드의 크기, size

: 자신을 포함한 모든 자손 노드의 개수

(ex. 노드 C의 크기는 3)

 

노드의 차수, degree

: 노드가 가진 가지(자식노드)의 수

(ex. 노드 D의 차수는 2)

 

노드의 깊이, depth

: 루트에서부터 해당 노드에 도달하기 위해 거쳐야 하는 간선의 수, 해당 노드가 루트 노드로부터 얼마나 떨어져 있는지를 나타낸다.

(ex. 노드 A(루트 노드)의 깊이는 0, 노드 F의 깊이는 2) 

 

노드의 높이, height

: 가장 깊은 노드와의 깊이 차이, 해당 노드가 트리의 가장 끝 노드로부터 얼마나 떨어져 있는지를 나타낸다.

(ex. 노드 J(가장 깊은 노드)의 높이는 0, 노드 C의 높이는 2, 노드 A의 높이는 3)

 

노드의 레벨, level

: 트리의 특정 깊이를 가지는 노드들의 집합으로, 루트 노드의 레벨을 1으로 시작한다.

(ex. 노드 B,C의 레벨은 2)

트리

트리의 차수, degree

: 트리를 구성하는 노드의 차수 중 최대 차수

 

트리의 높이, height 

: 트리에서 가장 깊은 노드의 깊이 (=루트 노드의 높이)

(위 사진 속 트리의 높이는 3)

 

(트리의 깊이는 노드의 깊이와 같은 것을 의미하는 듯하다. 트리의 깊이 = 각 노드의 깊이를 의미한다.)

 

 

저작자표시 비영리 변경금지 (새창열림)

'공부하기 > 자료구조' 카테고리의 다른 글

그래프(graph)  (4) 2024.01.24
힙(Heap) Max Heap, Min Heap  (1) 2024.01.18
이진 트리(Binary Tree)  (1) 2024.01.17
큐(Queue) / 원형큐(Circular Queue)  (0) 2024.01.16
스택(Stack)  (0) 2024.01.16
'공부하기/자료구조' 카테고리의 다른 글
  • 힙(Heap) Max Heap, Min Heap
  • 이진 트리(Binary Tree)
  • 큐(Queue) / 원형큐(Circular Queue)
  • 스택(Stack)
다섯자두
다섯자두
All I need is 💻 , ☕️ and a dash of luck
  • 다섯자두
    subbni
    다섯자두
  • 전체
    오늘
    어제
    • 전체 글 (88) N
      • 개발 이야기 (0)
      • 만들어보기 (17)
        • FromBookToBook (5)
        • Spring (5)
        • Node.js & React (3)
        • TroubleShooting (4)
      • 공부하기 (71) N
        • Network (3)
        • Cloud (1)
        • Database (5)
        • Java (13)
        • Javascript (0)
        • Spring (9)
        • React (18)
        • Algorithm (8)
        • 자료구조 (7)
        • ETC (7) N
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • velog
  • 공지사항

  • 인기 글

  • 태그

    프로젝트
    pdf 자동 다운로드
    outbox 패턴
    티스토리챌린지
    redis
    알고리즘
    로그인
    실시간 데이터 전송 기술
    자료구조
    재시도 로직
    network
    Express
    mysql
    HTTP
    SQL
    서명알고리즘
    SQS
    Spring
    SSE
    JPA
    java
    aws
    outbox
    springboot
    오블완
    pdf 프리뷰 실패
    Database
    최단거리
    알림 기능
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
다섯자두
트리(Tree)
상단으로

티스토리툴바