[자료구조] 트리(Tree) 구조의 개념, 용어, 특징에 대해 알아보자!

2023. 12. 14. 02:00· Computer Science/Data Structure
목차
  1. 💋 트리 자료구조란?
  2. 💋 트리 자료구조 용어
  3. ✔️ 구조 용어
  4. ✔️ 계산 용어
  5. 💋 트리 구조의 특징
  6. 💋 참고자료
반응형
반응형

 
 
Computer Science 모아보기 👉🏻 https://github.com/seoul-developer/CS

 

GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip

주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS development by creating an account on GitHub.

github.com

 

GitHub - seoul-developer/CS: 주니어 개발자를 위한 전공 지식 모음.zip

주니어 개발자를 위한 전공 지식 모음.zip. Contribute to seoul-developer/CS development by creating an account on GitHub.

github.com

 
 
 

💋 트리 자료구조란?

  • 데이터를 탐색하기 쉽도록 하기 위해서 계층적인 방식으로 정리한 구조
  • 계층적인 관계의 노드들이 edge로 연결된 형태
    • 각 노드는 값(value) + 다른 노드의 레퍼런스(ref)로 구성

 
A tree data structure is a hierarchical structure that is used to represent and organize data in a way that is easy to navigate and search. It is a collection of nodes that are connected by edges and has a hierarchical relationship between the nodes.
 

💋 트리 자료구조 용어

 

이미지 출처: https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/

 

✔️ 구조 용어

  • 간선(edge)
    • 노드와 노드를 연결하는 선 (link, branch)
    • 구현 관점에서는 레퍼런스를 의미
  • 루트 노드(Root Node)
    • 위 예시에서 A 는 루트 노드
    • 트리의 최상단 노드로 시작점 ⇒ Parent Node가 없음
    • A non-empty tree must contain exactly one root node and exactly one path from the root to all other nodes of the tree.
  • 자녀 노드(Child Node)
    • D, E는 B의 자녀 노드
    • 모든 노드는 0개 이상의 자녀 노드를 가진다.
  • 부모 노드(Parent Node)
    • 자녀 노드를 가지는 노드
    • B는 D, E의 부모 노드
    • The node which is a predecessor of a node is called the parent node of that node. {B} is the parent node of {D, E}.
  • 형제 노드(Sibling)
    • 같은 부모를 가지는 노드들
    • D,E는 형제 노드
  • 조상 노드(Ancestor of a Node)
    • 부모 노드를 따라, 루트 노드까지 올라가며 만나는 모든 노드
    • A,B는 E의 조상 노드
  • 자손 노드(Descendant)
    • 자녀 노드를 따라 내려가며 만날 수 있는 모든 노드
    • I, M, N은 E의 자손 노드
  • 내부 노드(Internal node)
    • 자녀 노드를 가지는 노드
    • Leaf Node를 제외한 모든 노드
  • 외부 노드(Leaf Node / External Node)
    • 자녀 노드가 없는 노드
    • K, L, M, N, O, P, G는 외부 노드

 

✔️ 계산 용어

  • 경로(Path)
    • 한 노드에서 다른 노드 사이의 노드의 시퀀스(sequence)
    • A에서 J노드의 경로는 A - C - F -J
  • 경로 길이(length of path)
    • 경로에 있는 노드의 수
    • A에서 J노드의 경로 길이는 4
  • 노드의 높이(height)
    • 노드에서 리프 노드까지 가장 긴 경로의 간선 수 (때에 따라 노드의 수로 세기도 한다)
    • D의 높이는 2
    • 리프 노드의 높이는 0
  • 트리의 높이(height of the tree)
    • 루트 노드의 높이
    • 위 그림에서 트리의 높이는 4
  • 노드의 깊이(depth)
    • 루트 노드에서 해당 노드까지 경로의 간선 수
    • D의 깊이는 2
    • 루트 노드의 깊이는 0
  • 트리의 깊이(depth of the tree)
    • 트리에 있는 노드의 깊이 중 가장 긴 깊이
    • 위 그림에서 트리의 깊이는 4
    • 트리의 깊이 = 트리의 높이
  • 노드의 차수(degree)
    • 노드의 자녀 노드 수
    • H의 차수는 2
  • 트리의 차수(degree of the tree)
    • 트리에 있는 노드들의 차수 중 가장 큰 차수
    • 위 그림에서 트리의 차수는 2
  • 두 노드 사이의 거리(distance)
    • 두 노드의 최단 경로의 간선 수
    • L과 O의 거리는 8
  • 노드의 레벨(level)
    • 노드와 루트 노드 사이의 경로에서 간선 수
    • 루트 노드의 레벨은 0 (또는 1로 보는 경우도 있다)
  • 넓이(width)
    • 어떤 레벨에 있는 노드의 수
    • Level 2의 width는 4
  • 노드의 크기(size)
    • 자신을 포함한 자손 노드의 수
    • C의 크기는 C, G, F, J, O, P를 모두 센 6
  • 트리의 크기(size of the tree)
    • 트리의 모든 노드의 수
    • 위 그림에서 트리의 크기는 16

 
 

  • 서브 트리(Subtree)
    • 각 노드의 자녀 노드들은 재귀적으로 서브 트리를 구성한다.
      • Any node of the tree along with its descendant.

 

이미지 출처: https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/

 
이런식으로, 트리는 재귀적으로 내부적으로 수많은 서브트리를 가지면서 만들어진다.
 

struct Node
{
   int data;
   struct Node *first_child;
   struct Node *second_child;
   struct Node *third_child;
   .
   .
   .
   struct Node *nth_child;
};

 

💋 트리 구조의 특징

  • 루트 노드는 딱 1개만 존재한다.
  • 트리 내에 사이클은 존재하지 않는다.
  • 자녀 노드는 하나의 부모 노드만 가진다.
  • 데이터를 순차적으로 저장하지 않는 비선형 구조
  • 트리에 서브 트리가 있는 재귀적 구조
  • 계층적 구조

 
 

💋 참고자료

  • https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/
  • https://www.youtube.com/watch?v=ohrwGtqeW-I&list=PLcXyemr8ZeoR82N8uZuG9xVrFIfdnLd72&index=9

 

도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!

 

반응형

'Computer Science > Data Structure' 카테고리의 다른 글

[자료구조] Priority Queue(우선순위 큐)와 Heap(힙)  (2) 2023.12.15
[자료구조] 이진 트리(Binary Tree): 트리의 분류와 이진 트리의 종류(Full, Complete, Perfect, Balanced, Degenarate Binary Tree)  (0) 2023.12.14
[자료구조] 스택(Stack), 큐(Queue): 개념, LinkedList vs ArrayDeque, 시간복잡도 비교  (3) 2023.12.13
[자료구조] ADT(Abstract Data Type)란?: 배열, 스택, 큐, 집합, 맵, 트리, 우선순위 큐의 ADT와 자바에서 구현한 자료구조  (0) 2023.12.09
[자료구조] 자료구조의 개념과 분류: Linear vs Non-Linear, Static vs Dynamic  (0) 2023.12.08
  1. 💋 트리 자료구조란?
  2. 💋 트리 자료구조 용어
  3. ✔️ 구조 용어
  4. ✔️ 계산 용어
  5. 💋 트리 구조의 특징
  6. 💋 참고자료
'Computer Science/Data Structure' 카테고리의 다른 글
  • [자료구조] Priority Queue(우선순위 큐)와 Heap(힙)
  • [자료구조] 이진 트리(Binary Tree): 트리의 분류와 이진 트리의 종류(Full, Complete, Perfect, Balanced, Degenarate Binary Tree)
  • [자료구조] 스택(Stack), 큐(Queue): 개념, LinkedList vs ArrayDeque, 시간복잡도 비교
  • [자료구조] ADT(Abstract Data Type)란?: 배열, 스택, 큐, 집합, 맵, 트리, 우선순위 큐의 ADT와 자바에서 구현한 자료구조
깃짱
깃짱
연새데학교 컴퓨터과학과 & 우아한테크코스 5기 백엔드 스타라이토 깃짱
반응형
깃짱
깃짱코딩
깃짱
전체
오늘
어제
  • 분류 전체보기
    • About. 깃짱
    • Weekly Momentum
      • 2024
    • PROJECT
      • AIGOYA LABS
      • Stamp Crush
      • Sunny Braille
    • 우아한테크코스5기
    • 회고+후기
    • Computer Science
      • Operating System
      • Computer Architecture
      • Network
      • Data Structure
      • Database
      • Algorithm
      • Automata
      • Data Privacy
      • Graphics
      • ETC
    • WEB
      • HTTP
      • Application
    • C, C++
    • JAVA
    • Spring
      • JPA
      • MVC
    • AI
    • MySQL
    • PostgreSQL
    • DevOps
      • AWS
      • 대규모 시스템 설계
    • frontend
      • HTML+CSS
    • NextJS
    • TEST
    • Industrial Engineering
    • Soft Skill
    • TIL
      • 2023
      • 2024
    • Linux
    • Git
    • IntelliJ
    • ETC
      • 日本語

블로그 메뉴

  • 홈
  • 깃허브

인기 글

최근 글

태그

  • 우아한테크코스5기
  • TDD
  • 예외
  • 조합
  • 스트림
  • 우테코
  • 컴포지션
  • 우테코5기
  • 상속
  • 상속과조합
  • Java
  • 함수형프로그래밍
  • lamda
  • 레벨로그
  • OOP
  • 우아한테크코스
  • 람다
  • 람다와스트림
  • Stream
  • Composition
hELLO · Designed By 정상우.v4.2.0
깃짱
[자료구조] 트리(Tree) 구조의 개념, 용어, 특징에 대해 알아보자!
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.