Struktur Data
~ Tree dan Binary Tree~
leaves
branches
root
leaves
branches
nodes
2 3 1 2
4 5 6 7 2 1
8 9 10 3 0
Height 4
B C
Root Node A
Leaves 5
D E F Interior/internal nodes 4
Ancestors of H G,E,B,A
Descendants of B B,E,F,G,H,I
G Siblings of E D,F
Right subtree of A C
H I Degree of this tree 8
Tree
root
1
leaf node
T1 1 n1 T2 T3 T4
1 n2 1 n3 1 n4
2 3 4 2 3 2
5 6 3
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 17
Definisi TREE
2. Dari k buah tree T1~Tk , dan masing-masing memiliki root n1~nk. Jika
node n adalah parent dari node n1~nk, akan diperoleh sebuah tree
baru T yang memiliki root n. Dalam kondisi ini, tree T1~Tkmenjadi
sub-tree dari tree T. Root dari sub-tree n1~nkadalah child dari node
n. T 1 n
Tree dilihat
secara rekursif. T2 T3 T4
T1 2 n1 3 n2 4 n3 5 n4
Setiap subtree
adalah juga 6 7 8 9 10 11
sebuah tree.
12 13 14
a a a a a
b b b c b
x x
+ 5 4 +
7 2
x +
3 + 2 8
1 +
4 6
( ( ( ( 3 x ( 1 + ( 4 + 6 ) ) ) + ( 2 + 8 ) ) x 5 ) + ( 4 x (7 + 2 ) ) )
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 23
Ketentuan mengenai Binary Tree
• Jika dibatas bawah tiap node hanya memiliki dua node anak
(children),
maka:
– (# external nodes ) = (# internal nodes) + 1
– (# nodes at level i) <= 2i
– (# external nodes) <=2 (height)
– (height) >= log2 (# external nodes)
– (height) >= log2 (# nodes) – 1
– (height) <=(# internal nodes) = ((# nodes) - 1)/2
Sumber: Mark Allen Weiss, Data Structures and Problem Solving Using Java (4rd edition),
Addison Wesley, 2010, page 666
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 26
Menghitung tinggi tree
• Base case (empty tree).
– Catatan: Tree dengan hanya satu node memiliki tinggi = 0.
• Terapkan perhitungan/analisis sebelumnya dalam bentuk
program.
public static int height (BinaryNode<A> t)
{
if (t == null) {
return -1;
} else {
return max(height (t.left) + 1, height (t.right) + 1);
}
}
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 27
Algoritma Pada Binary Tree
• Struktur data tree di definisikan / dilihat secara rekursif:
– sebuah binary tree terdiri dari sebuah node dengan dua buah sub tree (kiri
dan kanan) yang masing-masing adalah tree juga.
• Algoritma untuk Binary Tree akan lebih mudah dinyatakan secara
rekursif.
• Binary tree memiliki dua kasus rekursif
– Base case: empty leaf– external node.
– Recursive case: Sebuah internal node (root) and dua binary trees (subtree
kiri dan subtree kanan)
• Traversing Tree:
“Menjalani/mengunjungi” tree.
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 28
Tree Traversal
E F
A→B→C→D→E→G→F→H
E F
C→G→E→F→D→B→H→A
E F
C→B→G→E→D→F→A→H
Null Null
ICB/Alsrtudat/Tree, Binary Tree dan Binary Search Tree 43
Find Minimum
• Mencari node yang memiliki nilai terkecil.
• Algoritma: 6 Left Right
– ke kiri terus sampai buntu….:)
• Code: 2 8
ATAU
F H pencarian = I.
• i. induk dari simpul dengan kunci
pencarian = C dan G.
• Skematik diagram implementasi pohon
dengan linked list