Computer Science/자료구조

[자료구조] 트리(Tree)

2023. 5. 27. 20:28
목차
  1. 트리(Tree)

트리(Tree)

  • 노드와 링크로 구성된 자료구조
  • 계층적 구조를 나타낼 때 사용
    ex) 폴더 구조, 조직도, 가계도, etc.

트리의 특징

  1. 하나의 노드에서 다른 노드로 이동하는 경로는 유일하다.
  2. 노드가 N개인 트리의 Edge의 수는 N-1개 이다.
  3. Cycle이 존재하지 않는다. (Acyclic)
  4. 모든 노드는 서로 연결되어 있다.
  5. 하나의 Edge를 끊으면 2개의 Sub-Tree로 분리된다.

이진 트리 종류

1. 이진 트리(Binary Tree)

  • 각 노드는 최대 2개의 자식을 가질 수 있다.
  • 자식 노드는 좌우를 구분한다.

2. 포화 이진 트리(Perfect Binary Tree) : 모든 레벨에서 노드들이 꽉 채워져 있는 트리

3. 완전 이진 트리(Complete Binary Tree) : 마지막 레벨을 제외하고 노드들이 모두 채워져 있는 트리

4. 정 이진 트리(Full Binary Tree) : 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리

5. 편향 트리(Skewed Binary Tree) = 사향 트리 : 한쪽으로 기울어진 트리

6.균형 이진 트리(Balanced Binary Tree) : 모든 노드의 좌우 서브 트리 높이가 1이상 차이 나지 않는 트리

이진 트리 특징

  1. 포화 이진 트리의 높이가 h일 때, 노드의 수는 (2^h + 1) - 1개
  2. 포화(or 완전) 이진트리의 노드가 N개 일 때, 높이는 log N
  3. 이진 트리의 노드가 N개 일 때, 최대 가능 높이는 N

트리 순회 방식

  • 모든 노드를 빠뜨리거나 중복하지 않고 방문하는 연산
  • 순회의 4가지 종류
    • 전위 순회, 중위 순회, 후위 순회 → DFS
    • 레벨 순회 → BFS

1. 전위 순회(Preorder Traversal)

  • 방문 순서 : 현재 노드 → 왼쪽 노드 → 오른쪽 노드

2. 중위 순회(Inorder Traversal)

  • 방문 순서 : 왼쪽 노드 → 현재 노드 → 오른쪽 노드

3. 후위 순회(Postorder Traversal)

  • 방문 순서 : 왼쪽 노드 → 오른쪽 노드 → 현재 노드

4. 레벨 순회(Levelorder Traversal)

  • 방문 순서 : 위쪽 레벨 부터 왼쪽 노드 → 오른쪽 노드

이진 트리 구현

  • 배열
    • 레벨 순회 순으로 배열에 구성

  • 연결 리스트
    • 값과 간선을 관리하기 위한 노드로 연결리스트 구성
    • 값을 넣을 공간 1개, 왼쪽 노드를 가리킬 공간 1개, 오른쪽 노드를 가리킬 공간 1
저작자표시 (새창열림)

'Computer Science > 자료구조' 카테고리의 다른 글

[자료구조] 이진 탐색 트리 (Binary Search Tree)  (0) 2023.06.03
[자료구조] 힙(Heap)  (0) 2023.05.27
[자료구조] 스택(Stack) & 큐(Queue)  (0) 2023.05.27
[자료구조] Array vs ArrayList vs LinkedList  (0) 2023.05.20
[자료구조] 연결리스트(LinkedList)  (0) 2023.05.20
  1. 트리(Tree)
'Computer Science/자료구조' 카테고리의 다른 글
  • [자료구조] 이진 탐색 트리 (Binary Search Tree)
  • [자료구조] 힙(Heap)
  • [자료구조] 스택(Stack) & 큐(Queue)
  • [자료구조] Array vs ArrayList vs LinkedList
dbssk
dbssk
dbssk
K.Back-end
dbssk
  • 분류 전체보기 (220)
    • 끄적 (0)
    • TIL (8)
      • Trouble Shooting (1)
    • Programmers (94)
      • Lv.0 (29)
      • Lv.1 (40)
      • Lv.2 (25)
    • 백준 (15)
    • 구름 (0)
    • Computer Science (79)
      • 컴퓨터 구조 (3)
      • Operating System (18)
      • 알고리즘 (9)
      • 자료구조 (11)
      • Database (10)
      • Network (8)
      • Web (12)
      • Design Pattern (8)
    • Spring (2)
    • Languages (13)
      • Java (13)
    • 북 스터디 (9)
      • 스프링 부트 핵심 가이드 (9)
      • 자바 코딩 인터뷰 완벽 가이드 (0)
    • 프론트엔드 (0)

인기 글

최근 글

태그

  • 개발자포트폴리오
  • spring
  • 배열
  • 프로그래머스
  • 백엔드스쿨
  • java
  • 해시
  • LV.1
  • 개발자취업
  • 개발자취준
  • 백준
  • 코딩테스트
  • 스택
  • Lv.0
  • LV.2
  • 개발자이력서
  • stack
  • hash
  • 자료구조
  • 백엔드공부
hELLO · Designed By 정상우.
dbssk
[자료구조] 트리(Tree)
상단으로

티스토리툴바

개인정보

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

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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