[알고리즘] 백준 - 트리 순회

June·2021년 3월 5일
0

알고리즘

목록 보기
115/260

백준 - 트리 순회

내 풀이

class Node:
    def __init__(self, value, lchild = None, rchild = None):
        self.value = value
        self.lchild = lchild
        self.rchild = rchild

N = int(input())
tree = {}

for _ in range(N):
    node, left, right = input().split(" ")
    tree[node] = Node(node, left, right)

def pre_order(node_num):
    node = tree[node_num]
    print(node.value, end="")
    if node.lchild != ".":
        pre_order(node.lchild)
    if node.rchild != ".":
        pre_order(node.rchild)

def in_order(node_num):
    node = tree[node_num]
    if node.lchild != ".":
        in_order(node.lchild)
    print(node.value, end="")
    if node.rchild != ".":
        in_order(node.rchild)


def post_order(node_num):
    node = tree[node_num]
    if node.lchild != ".":
        post_order(node.lchild)
    if node.rchild != ".":
        post_order(node.rchild)
    print(node.value, end="")

pre_order("A")
print()
in_order("A")
print()
post_order("A")

트리를 구성하는데 여러가지 방법이 있겠지만, 이렇게 Node 클래스를 만들고 Node의 data 를 key로 하는 딕셔너리로 트리를 유지하는 것도 괜찮은 방법이다.

0개의 댓글