트리의 순회
이진 트리를 입력받아 전위 순회(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'])