트리(Tree)
- 트리는 가계도와 같은 계층적인 구조를 표현할 때, 사용할 수 있는 자료구조이다.
이진 탐색 트리(Binary Search Tree)
트리의 순회(Tree Traversal)
- 트리 자료구조에 포함된 노드를 특정한 방법으로 한 번씩 방문하는 방법을 의미한다.
- 트리의 정보를 시각적으로 확인할 수 있다.
- 대표적인 트리 순회 방법은 다음과 같다.
class Node:
def __init__(self, data, left_node, right_node):
self.data = data
self.left_node = left_node
self.right_node = right_node
def pre_order(node):
print(node.data, end=' ')
if node.left_node != None:
pre_order(tree[node.left_node])
if node.right_node != None:
pre_order(tree[node.right_node])
def in_order(node):
if node.left_node != None:
pre_order(tree[node.left_node])
print(node.data, end=' ')
if node.right_node != None:
pre_order(tree[node.right_node])
def post_order(node):
if node.left_node != None:
pre_order(tree[node.left_node])
if node.right_node != None:
pre_order(tree[node.right_node])
print(node.data, end=' ')
n = int(input())
tree = {}
for i in range(n):
data, left_node, right_node = input().split()
if left_node == "None":
left_node = None
if right_node == "None":
right_node = None
tree[data] = Node(data, left_node, right_node)
pre_order(tree['A'])
print()
in_order(tree['A'])
print()
post_order(tree['A'])