Python으로 배우는 자료구조와 알고리즘
Miriam Antona
Software engineer


















def in_order(self, current_node):if current_node:self.in_order(current_node.left_child)print(current_node.data)self.in_order(current_node.right_child)my_tree.in_order(my_tree.root)
10
20
22
65
68
70
75



















def pre_order(self, current_node):
if current_node:
print(current_node.data)
self.pre_order(current_node.left_child)
self.pre_order(current_node.right_child)
my_tree.pre_order(my_tree.root)
65
20
10
22
70
68
75

순서: 왼쪽 -> 오른쪽 -> 현재
복잡도: $O(n)$
중위(in-order)
전위(pre-order)
후위(post-order)























def dfs(visited_vertices, graph, current_vertex):
if current_vertex not in visited_vertices:
print(current_vertex)
visited_vertices.add(current_vertex)
for adjacent_vertex in graph[current_vertex]:
dfs(visited_vertices, graph, adjacent_vertex)
Python으로 배우는 자료구조와 알고리즘