트리 순회란 그래프 순회의 한 형태로 트리 자료구조에서 각 노드를 정확히 한 번 방문하는 과정을 말한다.
그래프 순회와 마찬가지로 트리 순회 또한 DFS 또는 BFS로 탐색하는데, 특히 이진트리에서 DFS는 노드의 방문 순서에 따라 다음과 같이 크게 3가지 방식으로 구분된다.
1. 전위 순회(preorder) - NLR
2. 중위 순회(inorder) - LNR
3. 후위 순회(post-order) - LRN
L = 현재 노드의 왼쪽 서브트리
R = 현재 노드의 오른쪽 서브트리
N = 현재 노드 자신
class Node:
def __init__(self,val,left=None,right=None):
self.val=val
self.left=left
self.right=right
root=Node('F',Node('B',Node('A'),Node('D',Node('C'),Node('E'))),
Node('G',None,Node('I',Node('H')))
)
def preorder(node): # 전위순회
if node is None:
return
print(node.val,end=' ')
preorder(node.left)
preorder(node.right)
preorder(root)
print('\n')
def inorder(node): # 중위 순회
if node is None:
return
inorder(node.left)
print(node.val,end=' ')
inorder(node.right)
inorder(root)
print('\n')
def postorder(node): # 후위 순회
if node is None:
return
postorder(node.left)
postorder(node.right)
print(node.val,end=' ')
postorder(root)
print('\n')
'알고리즘 > 트리' 카테고리의 다른 글
트리의 지름 - 백준 1967번 (0) | 2022.09.02 |
---|---|
이진 탐색 트리(BST) 노드 간 최소 거리 (0) | 2022.05.09 |
이진 탐색 트리(BST) 합의 범위 (0) | 2022.05.08 |
정렬된 배열의 이진 탐색 트리 변환 (0) | 2022.05.08 |
이진 탐색 트리 (0) | 2022.05.08 |