트리 구조 정의

class Node(object):
	def __init__(self, item):
		self.item=item # 노드 값을 저장하는 변수
		self.left=self.right=None # 루트 노드의 자식 노드의미

class BinaryTree(object): #빈 루트만을 갖는 원소로 초기화
	def __init__(self):
		self.root=None

전위 순회

: 자식 노드를 확인하기 전에 서브 트리의 루트 확인 → 자식 노드 확인

자식 노드 확인시, 왼쪽 노드부터 확인

Untitled

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)#루트 노드에서 시작

중위순회

왼쪽 자식 노드-루트 노드-오른쪽 자식 노드 순으로 값을 확인

자식 노드를 확인하고 밑에 자손 노드들이 있으면 자손 노드들도 동일한 방식으로 확인

Untitled

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)

후위순회