์ค์ ์ํ(in-order traversal) : ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์ฌ์ด์ ์๊ธฐ์์ ์ ์ํํ๋ ๊ฒ

class Node:
def inorder(self):
traversal = []
if self.left:
traversal += self.left.inorder()
traversal.append(self.data)
if self.right:
traversal += self.right.inorder()
return traversal
class BinaryTree:
def inorder(self):
if self.root:
return self.root.inorder()
else: # ๋น ํธ๋ฆฌ์ธ ๊ฒฝ์ฐ
return []
์ ์ ์ํ(pre-order traversal) : ์๊ธฐ์์ ์ ๋จผ์ ์ํํ๋ ๊ฒ

class Node:
def preorder(self):
traversal = []
traversal.append(self.data)
if self.left:
traversal += self.left.preorder()
if self.right:
traversal += self.right.preorder()
return traversal
class BinaryTree:
def preorder(self):
if self.root:
return self.root.preorder()
else:
return []
ํ์ ์ํ(post-order traversal) : ์๊ธฐ์์ ์ ๋ง์ง๋ง์ ์ํํ๋ ๊ฒ

class Node:
def Postorder(self):
traversal = []
if self.left:
traversal += self.left.Postorder()
if self.right:
traversal += self.right.Postorder()
traversal.append(self.data)
return traversal
class BinaryTree:
def Postorder(self):
if self.root:
return self.root.Postorder()
else:
return []
class BinaryTree:
def bft(self):
q = ArrayQueue()
traversal = []
if self.root:
q.append(self.root)
while q.Empty()==0:
node = q.dequeue
traversal.append(node.data)
if node.left:
q.enqueue(node.left)
if node.right:
q.enqueue(node.right)
return traversal