Traversal bertujuan menemukan atau mengunjungi setiap node dari tree. Terdapat 3 metoda traversal yang umum digunakan, yaitu:
- Pre-Order akan mulai dari root, lalu selalu mengunjungi node paling kiri dahalu sampai habis, lalu kekanan.
- In-Order akan memulai dari nilai dari yang paling kecil.
- Post-Order akan dimulai dari node paling kiri, kemudian kekanan, baru mengunjungi parent.
Untuk lebih jelasnya lihat gambar dibawah.

Tambahkan fungsi traversal pada class Node
def traversePreorder(self):
print(self.data)
if self.left:
self.left.traversePreorder()
if self.right:
self.right.traversePreorder()
def traverseInorder(self):
if self.left:
self.left.traverseInorder()
print(self.data)
if self.right:
self.right.traverseInorder()
def traversePostorder(self):
if self.left:
self.left.traversePostorder()
if self.right:
self.right.traversePostorder()
print(self.data)
Dapat diperhatikan dari code diatas, fungsi traverse dapat dibedakan hanya dengan memindahkan posisi perintah print. Dimana pre-order ada diawal fungsi, in-order ada ditengah fungsi dan post-order diakhir fungsi.
Tambahkan juga fungsi traverse pada class Tree.
def traversePreorder(self):
self.root.traversePreorder()
def traverseInorder(self):
self.root.traverseInorder()
def traversePostorder(self):
self.root.traversePostorder()
Berikut isi lengkap code tree
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def search(self, target):
if self.data == target:
print("Node found")
return self
if self.left and self.data > target:
return self.left.search(target)
if self.right and self.data < target:
return self.right.search(target)
print("No Node Found")
def traversePreorder(self):
print(self.data)
if self.left:
self.left.traversePreorder()
if self.right:
self.right.traversePreorder()
def traverseInorder(self):
if self.left:
self.left.traverseInorder()
print(self.data)
if self.right:
self.right.traverseInorder()
def traversePostorder(self):
if self.left:
self.left.traversePostorder()
if self.right:
self.right.traversePostorder()
print(self.data)
class Tree:
def __init__(self, root, name=''):
self.root = root
self.name = name
def search(self, target):
return self.root.search(target)
def traversePreorder(self):
self.root.traversePreorder()
def traverseInorder(self):
self.root.traverseInorder()
def traversePostorder(self):
self.root.traversePostorder()
node = Node(10)
node.left = Node(5)
node.right = Node(15)
node.left.left = Node(3)
node.left.right = Node(6)
node.right.left = Node(12)
node.right.right = Node(30)
myTree = Tree(node, 'Basic BST')
print("PreOrder")
myTree.traversePreorder()
print("\n")
print("InOrder")
myTree.traverseInorder()
print("\n")
print("PostOrder")
myTree.traversePostorder()
print("\n")
PS F:\Project\bst> python tree.py
PreOrder
10
5
3
6
15
12
30
InOrder
3
5
6
10
12
15
30
PostOrder
3
6
5
12
30
15
10