TREE
TREE
1.
PENGERTTIAN
TREE
Kumpulan node yang saling terhubung satu sama lain
dalam suatu kesatuan yang membentuk layaknya struktur sebuah pohon. Struktur
pohon adalah suatu cara merepresentasikan suatu struktur hirarki (one-to-many)
secara grafis yang mirip sebuah pohon, walaupun pohon tersebut hanya tampak
sebagai kumpulan node-node dari atas ke bawah. Suatu struktur data yang tidak
linier yang menggambarkan hubungan yang hirarkis (one-to-many) dan tidak linier
antara elemen-elemennya.
2.
ISTILAH
DALAM TREE
Ø Prodecessor : node yang berada diatas node tertentu.
Ø Successor :
node yang berada di bawah node tertentu.
Ø Ancestor :
seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang
sama.
Ø Descendant :
seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang
sama.
Ø Parent :
predecssor satu level di atas suatu node.
Ø Child :
successor satu level di bawah suatu node.
Ø Sibling :
node-node yang memiliki parent yang sama dengan suatu node.
Ø Subtree :
bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki
semua karakteristik dari tree tersebut.
Ø Size :
banyaknya node dalam suatu tree.
Ø Height :
banyaknya tingkatan/level dalam suatu tree.
Ø Root :
satu-satunya node khusus dalam tree yang tak punya predecssor.
Ø Leaf :
node-node dalam tree yang tak memiliki seccessor.
Ø Degree :
banyaknya child yang dimiliki suatu node.
3.
JENIS-JENIS
BINARY TREE
Tree dengan syarat bahwa tiap node hanya boleh
memiliki maksimal dua sub pohon dan kedua subpohon harus terpisah. Berikut Kelebihan
struktur Binary Tree :
Ø Mudah
dalam penyusunan algoritma sorting
Ø Searching
data relatif cepat
Ø Fleksibel
dalam penambahan dan penghapusan data
4.
IMPLEMENTASI ALGORITMA TREE
Ø Insert
Insert
yaitu menambahkan node dalam tree. Jika data yang akan dimasukkan lebih besar
daripada elemen root, maka akan diletakkan di node sebelah kanan, sebaliknya
jika lebih kecil maka akan diletakkan di node sebelah kiri. Untuk data pertama
akan menjadi elemen root.
Ø PreOrder
PreOrder yaitu cetak
node yang dikunjungi,kunjungi left, kunjungi right.
Ø InOrder
InOrder
yaitu kunjungi left, cetak node yang dikunjungi, kunjungi right.
Ø PostOrder
PostOrder
yaitu kunjungi left, kunjungi right, cetak node yang dikunjungi.
Ø Searching Data
Searching
Data yaitu untuk searching data kita tinggal menjelajahi node yang ada di dalam
tree, algoritmanya adalah jika data yang di cari sama dengan root maka data di temukan,jika
tidak maka akan mengecek kembali apakah data lebih lebih kecil dari root maka
secara rekursi akan mencari kekiri, jika data lebih besar dari root maka secara
rekursif akan mencari ke kanan.
5.
CONTOH
SOURCE CODE
from
__future__ import print_function
class
Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items==[]
def push(self,items):
self.items.append(items)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
class
Binarytree:
def __init__(self,root):
self.key = root
self.leftChild = None
self.rightChild = None
def insertLeft(self,newNode):
if self.leftChild == None :
self.leftChild =
Binarytree(newNode)
else :
t = Binarytree(newNode)
t.leftChild = self.leftChild
self.leftChild = t
def insertRight(self,newNode):
if self.rightChild == None :
self.rightChild =
Binarytree(newNode)
else :
t = Binarytree(newNode)
t.rightChild = self.rightChild
self.rightChild = t
def getrightChild(self):
return self.rightChild
def getleftChild(self):
return self.leftChild
def getrootVal(self):
return self.key
def setrootVal(self,obj):
self.key = obj
def size(self):
count = 0
selfleft = self
selfright = self
while selfleft.getleftChild() != None
or selfright.getrightChild() != None :
count += 1
if selfleft.getleftChild() != None:
selfleft =
selfleft.getleftChild()
else :
selfright =
selfright.getrightChild()
return count
def
Inorder(root):
if root:
Inorder(root.getleftChild())
print(root.getrootVal(),end="
")
Inorder(root.getrightChild())
def
Preorder(root):
if root:
print(root.getrootVal(),end="
")
Preorder(root.getleftChild())
Preorder(root.getrightChild())
def
Postorder(root):
if root:
Postorder(root.getleftChild())
Postorder(root.getrightChild())
print(root.getrootVal(),end="
")
root
= Binarytree('P')
root.insertLeft('F')
root.getleftChild().insertLeft('B')
root.getleftChild().insertRight('H')
root.getleftChild().getleftChild().insertLeft('A')
root.getleftChild().getrightChild().insertRight('M')
root.insertRight('S')
root.getrightChild().insertLeft("R")
root.getrightChild().insertRight("W")
Inorder(root)
print
()
Preorder(root)
print
()
Postorder(root)
Di post oleh :
1. FITRI ANISA (170411100014)
2. DHEA OKY SYAFITRI (170411100006)
Komentar
Posting Komentar