모든 노드가 2개 또는 0개의 자식을 가지는 트리
자료구조에 저장된 모든 데이터를 도는 것 -> 모든 노드들을 출력만 하면 된다.
재귀를 사용해서 트리에 있는 노드를 모두 출력해 내는 것
뿌리(Root) 노드 → 왼쪽 서브트리 → 오른쪽 서브트리 순으로 출력하는 방법입니다.
class Node:
"""이진 트리 노드를 나타내는 클래스"""
def __init__(self, data):
"""이진 트리 노드는 데이터와 두 자식 노드에 대한 레퍼런스를 갖는다"""
self.data = data
self.left_child = None
self.right_child = None
def traverse_preorder(node):
"""in-order 순회 함수"""
# 코드를 쓰세요
if node is None:
pass
else:
print(node.data)
traverse_inorder(node.left_child)
traverse_inorder(node.right_child)
print()로 현재의 노드 데이터를 출력 후 -> 왼쪽 노드 순회 -> 오른쪽 노드 순회
왼쪽 서브 트리 → 오른쪽 서브 트리 → 뿌리 노드 순으로 순회합니다. 구현 방법은 다음과 같습니다.
class Node:
"""이진 트리 노드를 나타내는 클래스"""
def __init__(self, data):
"""이진 트리 노드는 데이터와 두 자식 노드에 대한 레퍼런스를 갖는다"""
self.data = data
self.left_child = None
self.right_child = None
def traverse_postorder(node):
"""in-order 순회 함수"""
# 코드를 쓰세요
if node is None:
pass
else:
traverse_inorder(node.left_child)
traverse_inorder(node.right_child)
print(node.data)
왼쪽 서브트리 → 뿌리(Root) 노드 → 오른쪽 서브트리 순으로 순회합니다.
class Node:
"""이진 트리 노드를 나타내는 클래스"""
def __init__(self, data):
"""이진 트리 노드는 데이터와 두 자식 노드에 대한 레퍼런스를 갖는다"""
self.data = data
self.left_child = None
self.right_child = None
def traverse_inorder(node):
"""in-order 순회 함수"""
# 코드를 쓰세요
if node is None:
pass
else:
traverse_inorder(node.left_child)
print(node.data)
traverse_inorder(node.right_child)