| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 원시값
- 해시테이블
- 호이스팅
- 함수선언
- 함수표현
- 옵셔널체이닝
- 백준
- 삽입
- 힙트리
- quadratic probing
- 힙성질
- 균형이진트리
- 분할정복
- hash table
- 상수시간
- 알고리즘
- 얕은비교
- heapify
- 리액트
- 참조타입
- 해시함수
- 리터럴
- 원시타입
- literal
- 자료구조
- 리렌더링
- 자바스크립트
- 참조값
- null병합 연산자
- 힙정의
- Today
- Total
천천히 하지만 더 멀리
이진트리 순회 ( Preorder, Inorder, Postorder ) 본문
이진트리에 대해 궁금하다면?? 👇🏻👇🏻
https://p-james-y.tistory.com/6
이진트리 ( binary tree ) 표현법
최대 2개의 자식노드를 가지는 트리자료 구조 용어 정리 루트 노드 ( root node ) : 맨 상위 노드, 부모가 없는 노드 리프 노트 ( leaf node ) : 자식이 없는 노드 레벨 ( level ) : 트리의 깊이 링크 ( link ) :.
p-james-y.tistory.com
트리 순회란 ( tree traversal ) 각 노드를 한번씩 방문하는 것을 말한다
트리순회를 알아보기 전에 노드 클래스를 간단히 구현해보면 각각의 노드에는 key 가 있고, parent, left, right 링크가 존재합니다.
그림으로 알아보면 다음과 같습니다.

노드를 클래스로 구현하면 다음과 같습니다.
class Node:
def __init__(self, key):
self.key = key
self.parent = self.left = self.right = None
def __str__(self):
return str(self.key)

이제 이진트리 순회 방법을 알아보겠습니다. 이진트리를 순회하는 방법은 3가지 (Preorder, Inorder, Postorder) 가 있습니다. 트리는 다음과 같이 순회하는 지점(M) 과 순회하는 지점의 왼쪽 서브트리(L), 오른쪽 서브트리(R) 로 나타낼수 있습니다.

다음의 이진트리를 3가지 방법으로 방문해보겠습니다.
1. Preorder
M → L → R 순으로 방문하는 것입니다.
F → B → A → D → C → E → G → I → H
2. Inorder
L → M → R 순으로 방문하는 것입니다.
A → B → C → D → E → F → G → H → I
2. Postorder
L → R → M 순으로 방문하는 것입니다.
A → C → E → D → B → H → I → G → F
3가지 방법의 공통점은 항상 왼쪽 서브트리(L)를 오른쪽 서브트리(R)보다 먼저 방문한다는 것입니다.
3가지 순회 방법을 Node 클래스로 구현해보겠습니다.
class Node:
def __init__(self, key):
self.key = key
self.parent = self.left = self.right = None
def __str__(self):
return str(self.key)
def preorder(self): # 현재 방문중인 노드 = self, MLR
if self != None:
print(self.key)
if self.left:
self.left.preorder()
if self.right:
self.right.preorder()
def inorder(self):
if self != None:
if self.left:
self.left.inorder()
print(self.key)
if self.right:
self.right.inorder()
def postorder(self):
if self != None:
if self.left:
self.left.postorder()
if self.right:
self.right.postorder()
print(self.key)
Reference
https://www.youtube.com/watch?v=HDjqrmmpFdU&list=PLsMufJgu5933ZkBCHS7bQTx0bncjwi4PK&index=25
'CS > 자료 구조' 카테고리의 다른 글
| 균형이진 트리 회전 ( rotation ) (0) | 2022.03.05 |
|---|---|
| 이진 탐색 트리 ( Binary Search Tree ) (0) | 2022.02.19 |
| Heap tree ( Insert, find_max, delete_max ) (0) | 2022.01.23 |
| 이진트리 [ 힙 ] (0) | 2022.01.08 |
| 이진트리 ( binary tree ) 표현법 (0) | 2021.12.25 |