본문 바로가기
CS

[Algorithm] 트리의 순회(Tree Traversal)

by 공.대.남 2023. 3. 15.
반응형

 

안녕하세요! 공대남입니다.

오늘은 트리의 순회구조인 전위순회, 중위 순회, 후위 순회을 알아보겠습니다.

 

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:
    	in_order(tree[node.left_node])
    print(node.data, end=' ')
    if node.right_node != None:
    	in_order(tree[node.right_node])
     
def post_order(node):
    if node.left_node != None:
    	post_order(tree[node.left_node])
    if node.right_node != None:
    	post_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']) #전위순회

in_order(tree['A']) #중위순회

post_order(tree['A']) #후위순회
728x90
반응형

'CS' 카테고리의 다른 글

[Algorithm] 선택(Selection)/삽입(Insertion)정렬  (0) 2023.03.16
[Algorithm] DFS/BFS  (0) 2023.03.16
우선순위 큐(Priority Queue)  (0) 2023.03.15
[Algorithm] 스택(Stack), 큐(Queue)  (0) 2023.03.13
[Algorithm] 재귀(Recursion)  (0) 2023.03.13

댓글