Dokumen tersebut membahas tentang pohon biner, termasuk definisi, karakteristik, operasi-operasi dasar, dan implementasinya. Pohon biner adalah struktur data yang memungkinkan setiap node memiliki maksimal dua anak, dengan operasi seperti insert, delete, dan traversal. Pohon biner dapat diimplementasikan menggunakan array atau linked list ganda/berganda.
3. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
TreeTree
Merupakan tipe data abstrak yang
mempunyai hubungan antar elemen:
One to many.
Hubungan one to many meliputi:
1. Hubungan one to one.
2. Hubungan one to zero.
4. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
TreeTree
Karakteristik Tree
1. Terdapat satu node yang unik, yang tidak
memiliki predecessor. Node ini disebut Root.
2. Terdapat satu atau beberapa node yang tidak
memiliki successor. Node-node tersebut disebut
Leaf.
3. Setiap node kecuali Root, pasti memiliki satu
predecessor yang unik.
4. Setiap node kecuali Leaf, pasti memiliki satu
atau lebih successor
5. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
TreeTree
Hubungan Parent-Child
PARENT adalah predecessor langsung dari
suatu node.
CHILD adalah successor langsung dari
suatu
node.
Node-node yang memiliki Parent yang sama
disebut SIBLING.
6. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
TreeTree
B
A
E
F G I K
C D
JH
Root
Leaf Leaf LeafLeafLeaf Leaf
Leaf
7. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
TreeTree
B
A
E
F G I K
C D
JH
Root
Leaf Leaf LeafLeafLeaf Leaf
Leaf
Level 1
Level 2
Level 3
Path
Path-length=2
Tree-heigth = 3
8. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Binary tree adalah bentuk khusus dari tree
dimana setiap node hanya diperbolehkan
memiliki maksimum dua anak.
10. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Bentuk khusus binary-tree:
1. Full binary-tree
Semua node, kecuali leaf memliki dua anak dan
memiliki path-length yang sama.
2. Complete binary-tree
Semua node, kecuali leaf memiliki dua anak.
3. Skewed binary-tree
Semua node, kecuali leaf memiliki satu anak.
11. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Sifat rekursif pada Binary tree
1. Suatu Binary tree dapat berupa tree kosong.
2. Bila tree tidak kosong, tree memiliki satu node, yang disebut
Root node, beserta Subtree kiri dan Subtree kanan.
3. Subtree kiri dan Subtree kanan dapat berupa tree kosong.
Bila Subtree tidak kosong, Subtree memiliki satu node - disebut
Root node beserta Subtree kiri dan Subtree kanan.
12. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
ROOT
SUBTREE KIRI SUBTREE KANAN
13. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Tree Traversal
Akses pada suatu node pada tree
tidak semudah seperti pada linked
list,
karena sejak masuk ke root node,
ada dua jalur yang harus dipilih:
left child atau right child.
14. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Tiga macam traversal yang dapat digunakan
untuk mengakses node-node didalam Binary tree:
INORDER : Left Root Right.
PREORDER : Root Left Right.
POSTORDER : Left Right Root.
15. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
A
B C
ROOT
Traversal Inorder : B
A C
Traversal Preorder : A B
C
Traversal Postorder : B C
A
16. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
A
B C
D E
ROOT
Traversal Inorder : D B E A C
Traversal Preorder : A B D E C
Traversal Postorder : D E B C A
17. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
A
B C
D E
ROOT
Traversal Inorder : B A D C E
Traversal Preorder : A B C D E
Traversal Postorder : B D E C A
18. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
A
B C
D E F G
ROOT
Traversal Inorder : D B E A F C G
Traversal Preorder : A B D E C F G
Traversal Postorder : D E B F G C A
19. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Operasi-operasi pada Binary tree
1. Create( )
Menciptakan Binary tree baru dalam keadaan kosong.
2. Insert(elemen_type e, relative_pos r, bool fail)
Menambahkan satu elemen ke dalam Binary tree
pada
posisi relatif terhadap current pointer. Posisi current
pindah ke node baru.
Relative position pada perintah Insert:
Root : Insert node baru sebagai Root
Left : Insert node baru sebagai Left child.
Right : Insert node baru sebagai Right child.
Parent : Insert node baru sebagai Parent. (selalu Fail)
20. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
3. DeleteSub( )
Subtree yang ditunjuk oleh current akan dihapus,
posisi current pindah ke parent dari node yang
dihapus.
4. Find(relative_pos rel, bool fail)
Memindahkan current ke posisi rel.
5. Empty( )
Memeriksa apakah Binary tree kosong.
6. Clear( )
Menghapus seluruh Binary tree.
21. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Relative position pada perintah Find:
Root : Memindahkan pointer Current ke Root
Left : Memindahkan pointer Current ke Left child.
Right : Memindahkan pointer Current ke Right child.
Parent : Memindahkan pointer Current ke Parent.
22. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
7. Update(elemen_type e)
Isi node yang ditunjuk oleh current akan
diganti oleh isi dari e.
8. Retrieve(elemen_type *e)
Menyalin isi node yang ditunjuk oleh current
ke variabel e.
9. Traversal(order ord)
Melaksanakan traversal sesuai dengan ord,
yaitu: Inorder, Preorder atau Postorder.
Posisi current tidak berubah.
23. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-TreeContoh Operasi pada Binary-Tree
1. Create();1. Create();
2. Insert(A, Root, Fail);2. Insert(A, Root, Fail);
Binary TreeBinary Tree
R C
NULL NULL
R = Root, C = Current
A
R
C
24. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
3. Insert(B, Left , Fail); 4. Insert(C, Left,3. Insert(B, Left , Fail); 4. Insert(C, Left,
Fail);Fail);
Binary TreeBinary Tree
A
R
C B
A
R
C
B
C
25. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
5. Find(Parent , Fail); 6. Insert(D, Left,5. Find(Parent , Fail); 6. Insert(D, Left,
Fail);Fail);
Binary TreeBinary Tree
A
R
C B
C
A
R
C B
C
Fail = true
26. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
7. Insert(D, Right, Fail); 8. Find(Root,7. Insert(D, Right, Fail); 8. Find(Root,
Fail);Fail);
Binary TreeBinary Tree
A
R
C
B
C
A
R
B
C D C D
atau
Find(Parent,Fail);
2x
27. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
9. Insert(E, Right, Fail); 10. Insert(F, Right,9. Insert(E, Right, Fail); 10. Insert(F, Right,
Fail);Fail);
Binary TreeBinary Tree
A
R
B
C D
C E
A
R
B
C D C
E
F
28. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
12. Traversal(Inorder); 13.12. Traversal(Inorder); 13.
Traversal(Postorder);Traversal(Postorder);
Binary TreeBinary Tree
A
R
B
C D
C E
C B D A E
A
R
B
C D
C E
C D B E A
29. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
14. Update(B); 15. Find(Parent,14. Update(B); 15. Find(Parent,
Fail);Fail);
Binary TreeBinary Tree
A
R
B
C D
C B
A
R
B
C D
C
B
30. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)
16. Find(Left, Fail); 17. Deletesub(Parent,16. Find(Left, Fail); 17. Deletesub(Parent,
Fail);Fail);
Binary TreeBinary Tree
A
R
B
C D
C B
A
R
C
B
31. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Implementasi Binary tree dengan Array.
Indeks pada array menyatakan nomor node.
Indeks 0 adalah Root node.
Indeks Left child dari node p adalah 2p + 1.
Indeks Right child dari node p adalah 2p + 2.
Indeks Parent dari node p adalah (p-1)/2.
32. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
B
A
C
D E F G
H I
Contoh Binary TreeContoh Binary Tree
Implementasi dengan arrayImplementasi dengan array
33. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9][10][11][12]
Posisi elemen/node dalam array.
A B C D E F G H I
Kerugian implementasi binary-tree dengan array ?Kerugian implementasi binary-tree dengan array ?
34. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Implementasi dengan Double Linked
list.
struct TNode
{
elemen_type data;
struct TNode *left;
struct TNode *right;
};
35. Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah
Binary TreeBinary Tree
Implementasi dengan Multiple Linked
list.
struct TNode
{
elemen_type data;
struct TNode *left;
struct TNode *right;
struct TNode *parent;
};