트리 구조 정의
class Node(object):
def __init__(self, item):
self.item=item # 노드 값을 저장하는 변수
self.left=self.right=None # 루트 노드의 자식 노드의미
class BinaryTree(object): #빈 루트만을 갖는 원소로 초기화
def __init__(self):
self.root=None
전위 순회
: 자식 노드를 확인하기 전에 서브 트리의 루트 확인 → 자식 노드 확인
자식 노드 확인시, 왼쪽 노드부터 확인
1-2-4-8-5-3-6-7
def preorder(self):
def _preorder(node):
print(node.item,end=' ')# 방문 노드 출력
if node.left:#left노드가 있다면
_preorder(node.left) #왼쪽 노드 방문
if node.right:#left노드쪽 다 방문했으면 오른쪽 방문
_preorder(node.right)
_preofder(self.root)#루트 노드에서 시작
중위순회
왼쪽 자식 노드-루트 노드-오른쪽 자식 노드 순으로 값을 확인
자식 노드를 확인하고 밑에 자손 노드들이 있으면 자손 노드들도 동일한 방식으로 확인
8(자손)-4(자식왼쪽)-2자식루트)-5(자식오른쪽)-1(루트)-6(자식왼쪽)-3(자식루트)-7(자식오른쪽)
def inorder(self):
def _inorder(node):
if node.left:#자식노드가있으면
_inorder(node.left)#왼쪽노드에서 자식노드 실행
print(node.item,end=' ')
if node.right:#오른쪽 자식 노드가 있으면
_inorder(node.right)#오른쪽 노드에서 자식노드 실행
_inorder(self.root)
후위순회