[자료구조 멘토링] 트리 (feat.Python)

2025. 2. 4. 21:28· Python/알고리즘 - 이론
목차
  1. 1. 트리란?
  2. 2. 트리의 기본 용어
  3. 3. 이진 트리
  4. 3-1. 완전 이진트리
  5. 3-2. 포화 이진트리
  6. 3-3. 편향 이진트리
  7. 3-4. 이진트리의 순회
  8. 4. 파이썬에서 트리 표현하기
반응형

1. 트리란?

트리는 계층적 구조를 가진 비선형 자료구조로, 노드와 간선으로 이루어져 있다. 트리는 하나의 루트 노드를 중심으로 여러 개의 자식 노드와 부모 노드로 연결된다. 

 

2. 트리의 기본 용어

https://engineerinsight.tistory.com/316

루트 노드 - 트리의 최상위 노드

부모 노드 - 자식 노드를 가지는 노드

자식 노드 - 부모 노드로 부터 연결된 하위 노드

형제 노드 - 같은 부모를 가지는 노드

리프 노드 - 자식 노드가 없가 없는 노드

서브 트리 - 트리의 일부를 이루는 작은 트리

레벨 - 루트 노드를 기준으로 특정 노드까지의 깊이

높이 - 트리의 최대 레벨

 

3. 이진 트리

https://jiwondh.github.io/2017/10/15/tree/

3-1. 완전 이진트리

마지막 레벨을 제외한 모든 레벨이 노드로 가득 차있음

마지막 레벨의 노드는 왼쪽부터 순서대로 채워짐

3-2. 포화 이진트리

모든 노드가 두 개의 자식 노드를 가지거나, 하나도 가지지 않음

3-3. 편향 이진트리

모든 노드가 한쪽 방향으로만 연결된 트리

 

3-4. 이진트리의 순회

대표적인 방법으로는 아래와 같이 있다.

https://m.blog.naver.com/rlakk11/60159303809

전위 순회 ( Root → Left → Right ) - 0 1 3 7 8 4 9 10 2 5 11 6

중위 순회 ( Left → Root → Right ) - 7 3 8 1 9 4 10 0 11 5 2 6

후위 순회 ( Left → Right → Root ) - 0 1 2 3 4 5 6 7 8 9 10 11

 

4. 파이썬에서 트리 표현하기

트리는 다양한 방법으로 표현할 수 있다. 파이썬에서는 클래스를 사용한 노드 기반 트리 표현이 일반적이지만, 리스트, 딕셔너리, 네임드 튜플 등을 활용하는 방식도 있다.

 

대표적으로 클래스를 사용한 트리

# 트리 클래스 정의
class Node:
    def __init__(self, value):
        self.value = value
        self.left = None  # 왼쪽 자식 노드
        self.right = None  # 오른쪽 자식 노드

# 트리 생성
root = Node("A")
root.left = Node("B")
root.right = Node("C")
root.left.left = Node("D")
root.left.right = Node("E")
root.right.right = Node("F")

# 트리 구조:
#        A
#       / \
#      B   C
#     / \   \
#    D   E   F

 

반응형
저작자표시 (새창열림)

'Python > 알고리즘 - 이론' 카테고리의 다른 글

[자료구조 멘토링] 힙 (feat.Python)  (0) 2025.02.10
[자료구조 멘토링] 정렬 이론 (feat.Python)  (0) 2025.02.04
[자료구조 멘토링] 스택, 큐, 덱 (feat.Python)  (0) 2025.02.02
[자료구조 멘토링] 시간 복잡도  (0) 2025.01.20
[자료구조 멘토링] 함수의 재귀 (feat. Python)  (0) 2025.01.20
  1. 1. 트리란?
  2. 2. 트리의 기본 용어
  3. 3. 이진 트리
  4. 3-1. 완전 이진트리
  5. 3-2. 포화 이진트리
  6. 3-3. 편향 이진트리
  7. 3-4. 이진트리의 순회
  8. 4. 파이썬에서 트리 표현하기
'Python/알고리즘 - 이론' 카테고리의 다른 글
  • [자료구조 멘토링] 힙 (feat.Python)
  • [자료구조 멘토링] 정렬 이론 (feat.Python)
  • [자료구조 멘토링] 스택, 큐, 덱 (feat.Python)
  • [자료구조 멘토링] 시간 복잡도
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
[자료구조 멘토링] 트리 (feat.Python)
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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