데이터의 탐색 속도 증진을 위해 사용하는 구조
오른쪽 노드부터 차례로 없는 트리
루트 ‣ 왼쪽 ‣ 오른쪽
왼쪽 ‣ 루트 ‣ 오른쪽
왼쪽 ‣ 오른쪽 ‣ 루트
class Node:
def __init__(self, value, left, right):
self.value = value
self.left = left
self.right = right
N = int(input())
dic = {}
for _ in range(N):
value, left, right = input().split()
node = Node(value, left, right)
dic[value] = node
# 뿌리 -> 왼 -> 오
def pre_order(key):
node = dic[key]
print(node.value, end="")
# 왼쪽 먼저 진행이므로 left 이후 right
if node.left != ".":
pre_order(node.left)
if node.right != ".":
pre_order(node.right)
# 왼 -> 뿌리 -> 오
def in_order(key):
node = dic[key]
if node.left != ".":
in_order(node.left)
print(node.value, end="")
if node.right != ".":
in_order(node.right)
# 왼 -> 오 -> 뿌리
def post_order(key):
node = dic[key]
if node.left != ".":
post_order(node.left)
if node.right != ".":
post_order(node.right)
print(node.value, end="")
pre_order("A")
print()
in_order("A")
print()
post_order("A")
출처:
https://www.youtube.com/watch?v=z_tzHoPfllA
https://sites.google.com/site/cbnualgorithm2019/home/project/binarytreeijinteuli