반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- k8s
- 티스토리챌린지
- ElasticSearch
- 스프링부트
- 코딩테스트
- 스프링핵심원리
- 엘라스틱서치
- 알고리즘
- 이펙티브 자바
- Spring
- JavaScript
- 카카오
- Sort
- 이펙티브자바
- 카카오 면접
- 스프링 핵심원리
- kubernetes
- 클린아키텍처
- 스프링
- 김영한
- Effective Java 3
- 이차전지관련주
- java
- Effective Java
- 오블완
- 알고리즘정렬
- effectivejava
- 자바스크립트
- 예제로 배우는 스프링 입문
- 자바
Archives
- Today
- Total
Kim-Baek 개발자 이야기
[Tree] 트리 순회 - Tree traversal 본문
Tree Traversal
Tree Traversal
은 트리 순회이다.
Tree 자료구조에서 각각의 노드를 정화히 한 번만, 체계적으로 방문하는 과정이다.
전위 순회(PreOrder Traversl)
Root 노드부터 탐색하기 시작한다.
root => sub left => sub right
PreOrder Traversal
은 가장 깊은 왼쪽 노드부터 탐색하기 때문에, 우리가 잘 알고 있는 DFS
라고 생각하면 된다.
def preOrder(node):
print(node, end = ' ')
if node.left != null:
preOrder(node.left)
if node.right != null:
preOrder(node.right)
중위 순회(InOrder Traversal)
왼쪽 서브 트리부터 탐색하기 시작한다.
sub left => root => sub right
def inOrder(node):
if node.left != null:
inOrder(node.left)
print(node, end = ' ')
if node.right != null:
inOrder(node.right)
후위 순회(PostOrder Traversal)
sub left => sub right => root
def inOrder(node):
if node.left != null:
inOrder(node.left)
if node.right != null:
inOrder(node.right)
print(node, end = ' ')
레벨 순서 순회(Level-Order Traversal)
모든 node를 낮은 레벨 부터 순회한다.
BFS
라고 생각하면 된다.
def leverlOrder(graph, start_node):
visited = []
queue = []
queue.append(start_node)
visited.append(start_node)
while queue:
s = queue.pop(0)
print(s, end = " ")
for i in graph[start_node]:
if i not in visited:
visited.append(i)
quque.append(i)
def levelOrder(tree):
queue = []
queue.append(tree)
while queue:
node = queue.pop(0)
print(node.data, end = ' ')
if node.left != None:
queue.append(node.left)
if node.right != None:
queue.append(node.right)
Recursive
9
1 3
2 4 6 7
위와 같은 Tree 모양 일때, 순회 순수
PreOrder Traversal
: 9 => 1 => 2 => 4 => 3 => 6 => 7
InOrder Traversal
: 2 => 1 => 4 => 9 => 6 => 3 => 7
PostOrder Traversal
: 2 => 4 => 1 => 6 => 7 => 3 => 9
Level-Order Traversal
: 9 => 1 => 3 => 2 => 4 => 6 => 7
반응형
'컴퓨터 공학 > 자료구조, 알고리즘' 카테고리의 다른 글
퀵 정렬 (Quick Sort) (0) | 2020.09.28 |
---|---|
병합 정렬 (Merge Sort) (0) | 2020.09.27 |
삽입 정렬 (Insertion Sort) (0) | 2020.09.26 |
선택 정렬 (Selection Sort) (0) | 2020.09.25 |
BFS (Breath First Search) (0) | 2020.09.23 |
Comments