CodingTest.백준 [트리 순회] python

이호영·2021년 8월 6일
0

python

목록 보기
12/13

문제 설명

트리의 순회

이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.

구현 코드

트리 구조의 뼈대를 가지고 응용하여 풀었다.

class Node:
    def __init__(self, data,left=None,right = None):
        self.data = data
        self.left = left
        self.right = right


  
#   전위 순회 : DLR 
def preorderTraversal(node):
    print(node.data, end='')
    if not node.left  == None : preorderTraversal(tree[node.left])
    if not node.right == None : preorderTraversal(tree[node.right])

#   중위 순회 : LDR
def inorderTraversal(node):
    if not node.left  == None : inorderTraversal(tree[node.left])
    print(node.data, end='')
    if not node.right == None : inorderTraversal(tree[node.right])

#   후위 순회 : LRD
def postorderTraversal(node):
    if not node.left  == None : postorderTraversal(tree[node.left])
    if not node.right == None : postorderTraversal(tree[node.right])
    print(node.data, end='')


if __name__ == "__main__":

    tree ={}

    n = int(input())

    for i in range(n):
      a,b,c = input().split(' ')

      if b == '.':
        b = None
      if c == '.':
        c = None

      tree[a] = Node(a,b,c)

      
    print(       '전위 순회 : ', end='') ; preorderTraversal(tree['A'])
    print('\n' + '중위 순회 : ', end='') ; inorderTraversal(tree['A'])
    print('\n' + '후위 순회 : ', end='') ; postorderTraversal(tree['A'])

0개의 댓글