Anda di halaman 1dari 52

LAPORAN PRAKTIKUM

ANALISA ALGORITMA

TREE / POHON

Nama : MUHAMMAD RAIHAN


NIM : H1051191105

Senin, 13 Maret 2020


IRVAN DENATA

LABORATORIUM SISTEM KOMPUTER


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
ALAM
UNIVERSITAS TANJUNGPURA
PONTIANAK
2020
A. Dasar Teori

Binary Tree

Binary Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan
hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Binary Tree
adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan
kedua subtree tersebut harus terpisah. Binary Tree merupakan himpunan vertex-vertex yang
terdiri dari 2 subtree (dengan disjoint) yaitu subtree kiri dan subtree kanan. Setiap vertex dalam
binary tree mempunyai derajat keluar max = 2.

Sebuah pohon biner adalah grafik asiklis yang terhubung dimana setiap tingkatan dari susut
tidak lebih dari 3. Ini dapat ditunjukkan bahwa dalam pohon biner manapun, terdapat persis
dua atau lebih simpul dengan tingkat satu daripada yang terdapat dengan tingkat tiga, tetapi
bisa terdapat angka apa saja dari simpul dengan tingkat dua. Sebuah pohon biner berakar
merupakan sebuah grafik yang mempunyai satu dari sudutnya dengan tingkat tidak lebih dari
dua sebagai akar.

Dengan akar yang dipilih, setiap sudut akan memiliki ayah khusus, dan diatas dua anak
bagaimanapun juga, sejauh ini terdapat keterbatasan informasi untuk membedakan antara anak
kiri atau kanan. Jika kita membuang keperluan yang tak terkoneksi, membolehkan bermacam
koneksi dalam komponen di grafik, kita memanggil struktur sebuah hutan.
Sebuah jalan lain untuk mendefinisikan pohon biner melalui definisi rekursif pada grafik
langsung. Sebuah pohon biner dapat berarti :
- Sebuah sudut tunggal.
- Sebuah graf yang dibentuk dengan mengambil dua pohon biner, menambahkan sebuah sudut,
dan menambahkan sebuah panah langsung dari sudut yang baru ke akar dai setiap pohon biner.

Pohon biner dapat dikontruksi dari bahasa pemrogaraman primitif dalam berbagai cara. Dalam
bahasa yang menggunakan records dan referensi. Pohon biner secara khas dikontruksi dengan
mengambil sebuah struktur simpul pohon yang memuat beberapa data dan referensi ke anak
kiri dan anak kanan. Kadang-kadang itu juga memuat sebuah referensi ke ayahnya yang khas.
Jika sebuah simpul mempunyai kurang dari dua anak, beberapa penunjuk anak diaatur kedalam
nilai nol khusus atau kesebuah simpul sentinel.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam array, dan jika pohon
tersebut merupakan sebuah pohon biner lengkap, metode ini tidak boros tempat. Dalam
penyusunan yang rapat ini, jika sebuah simpul memiliki indeks i, anaknya dapat ditemukan
pada indeks ke-2i+1 dan 2i+2, meskipun ayahnya (jika ada) ditemukan pada indeks lantai ((i-
1)/2) (asumsikan akarnya memiliki indeks kosong). Metode ini menguntungkan dari banyak
penyimpanan yang rapat dan memiliki referensi lokal yang lebih baik, teristimewa selama
sebuah preordeer traversal.

• Istilah-istilah dalam pohon


1. Predesesor
Node yang berada diatas node tertentu.
(contoh : B predesesor dari E dan F)
2. Succesor
Node yang berada dibawah node tertentu.
(contoh : E dan F merupakan succesor dari B)
3. Ancestor
Seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama.
(contoh : A dan B merupakan ancestor dari F)
Istilah – istilah Dalam Pohon
4. Descendant
Seluruh node yang terletak sesudah node tertentu
dan terletak pada jalur yang sama.
(contoh : F dan B merupakan ancestor dari A)
5. Parent
Predesesor satu level diatas satu node
(contoh : B merupakan parent dari F)
6. Child
Succesor satu level dibawah satu node
(contoh : F merupakan child dari B)
7. Sibling
Node yang memiliki parent yang sama dengan satu
node (contoh : E dan F adalah sibling)
8. Subtree
Bagian dari tree yang berupa suatu node beserta
descendant-nya (contoh : Subtree B, E, F dan
Subtree D, G, H)
9. Size
Banyaknya node dalam suatu tree (contoh : gambar
tree diatas memiliki size = 8)
10. Height
Banyaknya tingkat/level dalam suatu tree (contoh :
gambar tree diatas memiliki height = 3)
11. Root (Akar)
Node khusus dalam tree yang tidak memiliki
predesesor (Contoh : A)
12. Leaf (Daun)
Node-node dalam tree yang tidak memiliki daun
(contoh : Node E,F,C,G,H)
13. Degree (Derajat)
Banyaknya child yang dimiliki oleh suatu node
(contoh : Node A memiliki derajat 3, node B memiliki derajat 2)
• Istilah pada pohon Binar

a. Pohon Biner Penuh (Full Binary Tree)


Semua simpul (kecuali daun) memiliki 2 anak dan tiap cabang memiliki panjang ruas yang
sama.

b. Pohon Biner Lengkap (Complete Binary Tree)


Hampir sama dengan Pohon BinerPenuh, semua simpul (kecualidaun) memiliki 2 anak tetapi
tiap cabang memiliki panjang ruas berbeda.

c. Pohon Biner Similer


Dua pohon yang memiliki struktur yang sama tetapi informasinya berbeda.
d. Pohon Biner Ekivalent
Dua pohon yang memiliki struktur dan informasi yangsama.

e. Pohon Biner Miring (Skewed Tree)


Dua pohon yang semua simpulnya mempunyai satu anak / turunan kecuali daun.

• Sifat utama Pohon Berakar

1. Jika Pohon mempunyai Simpul sebanyak n, maka banyaknya ruas atau edge adalah (n-1).
2. Mempunyai Simpul Khusus yang disebut Root, jika Simpul tersebut memiliki derajat keluar
>= 0, dan derajat masuk = 0.
3. Mempunyai Simpul yang disebut sebagai Daun / Leaf, jika Simpul tersebut berderajat keluar
= 0, dan berderajat masuk = 1.
4. Setiap Simpul mempunyai Tingkatan / Level yang dimulai dari Root yang Levelnya = 1
sampai dengan Level ke - n pada daun paling bawah. Simpul yang mempunyai Level sama
disebut Bersaudara atau Brother atau Stribling.
5. Pohon mempunyai Ketinggian atau Kedalaman atau Height, yang merupakan Level tertinggi
6. Pohon mempunyai Weight atau Berat atau Bobot, yang banyaknya daun (leaf) pada Pohon.
7. Banyaknya Simpul Maksimum sampai Level N adalah :
2 (N) - 1
8. Banyaknya Simpul untuk setiap Level I adalah :
N
∑ 2 ( I – 1)
I=1

• Kunjungan pada pohon Biner


Kunjungan pohon biner terbagi menjadi 3 bentuk binary tree :
1. Kunjungan secara preorder ( Depth First Order), mempunyai urutan :
a. Cetak isi simpul yang dikunjungi ( simpul akar ),
b. Kunjungi cabang kiri,
c. Kunjungi cabang kanan .

2. Kunjungan secara inorder ( symetric order), mempunyai urutan :


a. Kunjungi cabang kiri,
b. Cetak isi simpul yang dikunjungi (simpul akar),
c. Kunjungi cabang kanan .
3. Kunjungan secara postorder, mempunyai urutan :
a. Kunjungi cabang kiri,
b. Kunjungi cabang kanan,
c. Cetak isi simpul yang dikunjungi ( simpul akar ).

Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh
memiliki paling banyak dua child.

Jenis-jenis Binary Tree :

a) Full Binary Tree

Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus
mempunyai panjang path yang sama.

b) Complete Binary Tree

Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang
berbeda. Node kecuali leaf memiliki 0 atau 2 child.

c) Skewed Binary Tree

yakni Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.
Implementasi Binary Tree

Binary Tree dapat diimplemntasikan dalam Pascal dengan menggunakan double Linked List.
Untuk nodenya, bisa dideklarasikan sbb :
Type Tree = ^node;
Node = record
Isi : TipeData;
Left,Right : Tree;
end;
Contoh ilustrasi Tree yang disusun dengan double linked list :

(Ket: LC=Left Child; RC=Right Child)

Operasi-operasi pada Binary Tree :

• Create : Membentuk binary tree baru yang masih kosong.


• Clear : Mengosongkan binary tree yang sudah ada.
• Empty : Function untuk memeriksa apakah binary tree masih kosong.
• Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai root,
left child, atau right child. Khusus insert sebagai root, tree harus dalam keadaan
kosong.
• Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree tak boleh
kosong)
• Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak boleh
kosong)
• Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh
kosong)
• DeleteSub : Menghapus sebuah subtree (node beserta seluruh descendantnya) yang
ditunjuk current. Tree tak boleh kosong. Setelah itu pointer current akan berpindah ke
parent dari node yang dihapus.
• Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height, serta
average lengthnya. Tree tidak boleh kosong. (Average Length =
[jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
• Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali. Hasilnya
adalah urutan informasi secara linier yang tersimpan dalam tree. Adatiga cara traverse
: Pre Order, In Order, dan Post Order.

Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus
yang disebut Root dan node lainnya ( disebut subtree). Dalam tree terdapat jenis-jenis tree yang
memiliki sifat khusus, diantaranya adalah binary tree. Binary Tree adalah non linear linked list
dimana masing-masing nodenya menunjuk paling banyak 2 node yang lain. Gambaran pohon
biner ini seperti gambar berikut :

BT

Data

Data Data Null Null

Data Null null Data Null null

ADT Binary Tree


Dari ilustrasi gambar di atas ADT antrian dapat direpresentasikan sebagai
berikut :

Node List

int data; Node root;

Node nodeKiri; Tree()

Node nodeKanan; sisipDtNode(int dtSisip)

Node(int) preorderTraversal()

sisipDt(int) inorderTraversal()

postorderTraversal()
B. Pembahasan

Praktikum 1
1. class simpul {
2. public
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);

Baris ke -1 class simpul


Baris ke 2-5 delkarasi elemen tipe data String,simpul kanan dan simpul kiri
Baris ke 6-8 method ngisielemen dengan parameter Elemen tipe datanya Sring,elemen sama
Sama dengan ELEMEN
Baris ke 11 class pohon
Baris ke 12-16 public simpul akar,method deklarasi pohon ,akar sama dengan null.
Baris ke 17-37 method tambahsimpul dengan parameter simpul petunjuk,ELEMEN dengan
tipe data string.Jika suatu kondisi penunjuk = null maka simpul membuat
objek baru,objek baru mengakses method ngisielemen dengan atribut
ELEMEN. Objek baru mengakses atribut kiri =null, objek baru mengakses
atribut kanan =null,penunjuk = baru,mengembalikan nilai penunjuk.Dan jika
bukan maka masuk percabangan lagi jika suatu kondisi ELEMEN.compareTo
(Penunjuk.elemen) < 0 Atrribut ELEMEN mengakses untuk membandingkan
atribut penunjuk yang mengakses elemen dengan kurang dari nol,maka
atribut penunjuk mengakses atribut kiri sama dengan method tambah simpul
dengan parameter atribut penunjuk mengakses atribut kiri ,ELEMEN.
mengembalikan nilai penunjuk .Dan jika bukan maka penunjuk mengakses
kanan sama dengan method tambahsimpul dengan parameter atribut
penunjuk mengakses atribut kanan,ELEMEN.mengembalikan nilai penunjuk.
Baris ke 38-44 method preOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method preOrder petunjuk mengakses kiri
, maka nilai method preOrder petunjuk mengakses kanan,output nya nilai
penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan (,).
Baris ke 45-51 method inOlder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method inOlder petunjuk mengakses kiri
,output nya nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN)
ditambah dengan (,).
Baris ke 52-59 method postOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method postOrder petunjuk mengakses
kiri, maka nilai method postOrder petunjuk mengakses kanan,output nya
nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan
(,).
Baris ke 60 class program pohon biner
Baris ke 61-63 method utama (yang pertama kali dieksekusi),membuat objek baru
Pohonbiner.pohonbiner mengakses method deklarasi pohon.
Baris ke 64 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (M)
Baris ke 65 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (P)

Baris ke 66 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (D)

Baris ke 67 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (A)

Baris ke 68 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (S)

Baris ke 69 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (K)

Baris ke 70 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (N)

Baris ke 71 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (G)

Baris ke 72 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (O)

Baris ke 73 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (L)

Baris ke 74 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (W)

Baris ke 75 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (F)

Baris ke 76 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (J)

Baris ke 77 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (T)

Baris ke 78 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (H)

Baris ke 79 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (U)
Baris ke 80 objek pohon biner mengakses method preOrder mengeluarkan nilai
preOrder(Pohonbiner mengakses )
Praktikum 2

1. public
2. class simpul {
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);
81. PohonBiner.inOrder(PohonBiner.akar);
Baris ke -1 class simpul
Baris ke 2-5 delkarasi elemen tipe data String,simpul kanan dan simpul kiri
Baris ke 6-8 method ngisielemen dengan parameter Elemen tipe datanya Sring,elemen sama
Sama dengan ELEMEN
Baris ke 11 class pohon
Baris ke 12-16 public simpul akar,method deklarasi pohon ,akar sama dengan null.
Baris ke 17-37 method tambahsimpul dengan parameter simpul petunjuk,ELEMEN dengan
tipe data string.Jika suatu kondisi penunjuk = null maka simpul membuat
objek baru,objek baru mengakses method ngisielemen dengan atribut
ELEMEN. Objek baru mengakses atribut kiri =null, objek baru mengakses
atribut kanan =null,penunjuk = baru,mengembalikan nilai penunjuk.Dan jika
bukan maka masuk percabangan lagi jika suatu kondisi ELEMEN.compareTo
(Penunjuk.elemen) < 0 Atrribut ELEMEN mengakses untuk membandingkan
atribut penunjuk yang mengakses elemen dengan kurang dari nol,maka
atribut penunjuk mengakses atribut kiri sama dengan method tambah simpul
dengan parameter atribut penunjuk mengakses atribut kiri ,ELEMEN.
mengembalikan nilai penunjuk .Dan jika bukan maka penunjuk mengakses
kanan sama dengan method tambahsimpul dengan parameter atribut
penunjuk mengakses atribut kanan,ELEMEN.mengembalikan nilai penunjuk.
Baris ke 38-44 method preOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method preOrder petunjuk mengakses kiri
, maka nilai method preOrder petunjuk mengakses kanan,output nya nilai
penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan (,).
Baris ke 45-51 method inOlder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method inOlder petunjuk mengakses kiri
,output nya nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN)
ditambah dengan (,).
Baris ke 52-59 method postOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method postOrder petunjuk mengakses
kiri, maka nilai method postOrder petunjuk mengakses kanan,output nya
nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan
(,).
Baris ke 60 class program pohon biner
Baris ke 61-63 method utama (yang pertama kali dieksekusi),membuat objek baru
Pohonbiner.pohonbiner mengakses method deklarasi pohon.
Baris ke 64 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (M)
Baris ke 65 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (P)

Baris ke 66 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (D)

Baris ke 67 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (A)

Baris ke 68 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (S)

Baris ke 69 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (K)

Baris ke 70 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (N)

Baris ke 71 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (G)

Baris ke 72 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (O)

Baris ke 73 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (L)

Baris ke 74 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (W)

Baris ke 75 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (F)

Baris ke 76 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (J)

Baris ke 77 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (T)

Baris ke 78 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (H)
Baris ke 79 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (U)
Baris ke 80 objek pohon biner mengakses method preOrder mengeluarkan nilai
preOrder(Pohonbiner mengakses ) maka outputnya nilai preOrder
Baris ke 81 objek pohon biner mengakses method preOrder mengeluarkan nilai
inOrder(Pohonbiner mengakses ) maka outputnya nilai inOrder

Praktikum 3

1. public
2. class simpul {
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);
81. PohonBiner.inOrder(PohonBiner.akar);
82. PohonBiner.postOrder(PohonBiner.akar);
Baris ke -1 class simpul
Baris ke 2-5 delkarasi elemen tipe data String,simpul kanan dan simpul kiri
Baris ke 6-8 method ngisielemen dengan parameter Elemen tipe datanya Sring,elemen sama
Sama dengan ELEMEN
Baris ke 11 class pohon
Baris ke 12-16 public simpul akar,method deklarasi pohon ,akar sama dengan null.
Baris ke 17-37 method tambahsimpul dengan parameter simpul petunjuk,ELEMEN dengan
tipe data string.Jika suatu kondisi penunjuk = null maka simpul membuat
objek baru,objek baru mengakses method ngisielemen dengan atribut
ELEMEN. Objek baru mengakses atribut kiri =null, objek baru mengakses
atribut kanan =null,penunjuk = baru,mengembalikan nilai penunjuk.Dan jika
bukan maka masuk percabangan lagi jika suatu kondisi ELEMEN.compareTo
(Penunjuk.elemen) < 0 Atrribut ELEMEN mengakses untuk membandingkan
atribut penunjuk yang mengakses elemen dengan kurang dari nol,maka
atribut penunjuk mengakses atribut kiri sama dengan method tambah simpul
dengan parameter atribut penunjuk mengakses atribut kiri ,ELEMEN.
mengembalikan nilai penunjuk .Dan jika bukan maka penunjuk mengakses
kanan sama dengan method tambahsimpul dengan parameter atribut
penunjuk mengakses atribut kanan,ELEMEN.mengembalikan nilai penunjuk.
Baris ke 38-44 method preOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method preOrder petunjuk mengakses kiri
, maka nilai method preOrder petunjuk mengakses kanan,output nya nilai
penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan (,).
Baris ke 45-51 method inOlder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method inOlder petunjuk mengakses kiri
,output nya nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN)
ditambah dengan (,).
Baris ke 52-59 method postOrder dengan parameter simpul penunjuk .jika kondisi penunjuk
tidak sama dengan null maka nilai method postOrder petunjuk mengakses
kiri, maka nilai method postOrder petunjuk mengakses kanan,output nya
nilai penunjuk mengakses ELEMEN (Penunjuk.ELEMEN) ditambah dengan
(,).
Baris ke 60 class program pohon biner
Baris ke 61-63 method utama (yang pertama kali dieksekusi),membuat objek baru
Pohonbiner.pohonbiner mengakses method deklarasi pohon.
Baris ke 64 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (M)
Baris ke 65 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (P)

Baris ke 66 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (D)

Baris ke 67 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (A)

Baris ke 68 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (S)

Baris ke 69 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (K)

Baris ke 70 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (N)

Baris ke 71 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (G)

Baris ke 72 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (O)

Baris ke 73 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (L)

Baris ke 74 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (W)

Baris ke 75 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (F)

Baris ke 76 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (J)

Baris ke 77 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (T)

Baris ke 78 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (H)
Baris ke 79 objek pohon biner mengakses atribut akar sama dengan pohon biner mengakses
method tambahSimpul dengan parameter pohonbiner mengakses atribut akar ,
dan huruf (U)
Baris ke 80 objek pohon biner mengakses method preOrder mengeluarkan nilai
preOrder(Pohonbiner mengakses ) maka outputnya nilai preOrder
Baris ke 81 objek pohon biner mengakses method inOrder mengeluarkan nilai
inOrder(Pohonbiner mengakses ) maka outputnya nilai inOrder
Baris ke 82 objek pohon biner mengakses method postOrder mengeluarkan nilai
postOrder (Pohonbiner mengakses ) maka outputnya nilai postOrder.

Latihan

class import java.util.Scanner;

simpul {

public

String elemen;

simpul kiri;

simpul kanan;

public void ngisiElemen(String ELEMEN) {

elemen = ELEMEN;

class pohon {

public simpul akar;

public void deklarasiPohon() {

akar = null;

simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {

if (Penunjuk == null) {

simpul baru = new simpul();

baru.ngisiElemen(ELEMEN);

baru.kiri = null;

baru.kanan = null;

Penunjuk = baru;
return(Penunjuk);

else {

if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {

Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);

return(Penunjuk);

else {

Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);

return(Penunjuk);

public void preOrder(simpul Penunjuk) {

if (Penunjuk !=null) {

System.out.print(Penunjuk.elemen + ",");

preOrder(Penunjuk.kiri);

preOrder(Penunjuk.kanan);

public void inOrder(simpul Penunjuk) {

if(Penunjuk !=null) {

inOrder(Penunjuk.kiri);

System.out.print(Penunjuk.elemen + ",");

inOrder(Penunjuk.kanan);

public void postOrder (simpul Penunjuk) {


if(Penunjuk != null) {

postOrder(Penunjuk.kiri);

postOrder(Penunjuk.kanan);

System.out.print(Penunjuk.elemen + ",");

class ProgramPohonBiner1 {

public static void main(String[] args) {

String pilihan;

Scanner m = new Scanner(System.in);

pohon PohonBiner = new pohon();

System.out.println("================================");

System.out.println("Key");

System.out.println(" A = PreOrder");

System.out.println("");

System.out.println(" B = inOrder");

System.out.println("");

System.out.println(" C = postOrder");

System.out.println("");

System.out.println("================================");

System.out.println("Masukan Pilihan Anda :");

pilihan = m.nextLine();

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");


PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");

switch(pilihan) {

case "A":

System.out.println("PreOrder");

PohonBiner.preOrder(PohonBiner.akar);

System.out.println("");

break;

case "B":

System.out.println("inOrder");

PohonBiner.inOrder(PohonBiner.akar);

System.out.println("");

break;

case "C":

System.out.println("postOrder");

PohonBiner.postOrder(PohonBiner.akar);

System.out.println("");

break;

default:
System.out.println("eror");

Tugas

package tree;

import java.util.Scanner;

class simpul {

public

String elemen;

simpul kiri;

simpul kanan;

public void ngisiElemen(String ELEMEN) {

elemen = ELEMEN;

class pohon {

public simpul akar;

public void deklarasiPohon() {

akar = null;

simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {


if (Penunjuk == null) {

simpul baru = new simpul();

baru.ngisiElemen(ELEMEN);

baru.kiri = null;

baru.kanan = null;

Penunjuk = baru;

return(Penunjuk);

else {

if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {

Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);

return(Penunjuk);

else {

Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);

return(Penunjuk);

public void preOrder(simpul Penunjuk) {

if (Penunjuk !=null) {

System.out.print(Penunjuk.elemen + ",");

preOrder(Penunjuk.kiri);

preOrder(Penunjuk.kanan);

}
public void inOrder(simpul Penunjuk) {

if(Penunjuk !=null) {

inOrder(Penunjuk.kiri);

System.out.print(Penunjuk.elemen + ",");

inOrder(Penunjuk.kanan);

public void postOrder (simpul Penunjuk) {

if(Penunjuk != null) {

postOrder(Penunjuk.kiri);

postOrder(Penunjuk.kanan);

System.out.print(Penunjuk.elemen + ",");

public class tree {

public static void main(String args[]) {

pohon PohonBiner = new pohon();

Scanner m = new Scanner(System.in);

boolean running =true;

String jawab;
tree Naik = new tree();

Naik.tampilmenu();

while(running) {

System.out.println("Apakah Kamu ingin keluar?");

System.out.print("Jawab [ya/tidak] ");

jawab = m.nextLine();

if( jawab.equalsIgnoreCase("ya") ){

running = false;

System.out.print("Terima Kasih Semoga Hari Mu Menyenangkan :)");

else if(jawab.equalsIgnoreCase("tidak")){

Naik.tampilmenu();

else{

System.out.println("Error");

public void tampilmenu() {

String pilihan;

Scanner m = new Scanner(System.in);


pohon PohonBiner = new pohon();

System.out.println("================================");

System.out.println("Key");

System.out.println(" A = PreOrder");

System.out.println("");

System.out.println(" B = inOrder");

System.out.println("");

System.out.println(" C = postOrder");

System.out.println("");

System.out.println("================================");

System.out.println("Masukan Pilihan Anda :");

pilihan = m.nextLine();

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");


PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");

switch(pilihan) {

case "A":

System.out.println("PreOrder");

PohonBiner.preOrder(PohonBiner.akar);

System.out.println("");

break;

case "B":

System.out.println("inOrder");

PohonBiner.inOrder(PohonBiner.akar);

System.out.println("");

break;

case "C":

System.out.println("postOrder");

PohonBiner.postOrder(PohonBiner.akar);

System.out.println("");

break;

default:

System.out.println("eror");
}

C. Kesimpulan

1. Binary Tree adalah sebuah pohon biner, dimana tiap node memiliki tepat 2 sub-tree
(memiliki maksimal 2 cabang/degree). Binary tree digunakan untuk data yang terurut
secara hirarki.
2. Binary Tree dapat direpresentasikan dengan menggunakan Array maupun linked list.
Contohnya untuk membuat program tingkatan pegawai dalam perusahaan.

1.Praktikum 1 Hasil apakah yang didapat? Catatlah dalam laporan anda dan jelaskan mengapa bisa
demikian.

2. Praktikum 2 Hasil apakah yang didapat? Catatlah dalam laporan anda dan jelaskan mengapa bisa
demikian.

3. Praktikum 3 Hasil apakah yang didapat? Catatlah dalam laporan anda dan jelaskan mengapa bisa
demikian.
Jawab

1. Praktikum 1 outputnya adalah : M,D,A,K,G,F,J,H,L,P,N,O,S,W,T,U .Penyebabnya


karena sintak PohonBiner.preOrder(PohonBiner.akar); penjelasanya objek pohon biner
mengakses method preOrder mengeluarkan nilai preOrder(Pohonbiner mengakses )
maka outputnya nilai preOrder.
2. Praktikum 2 outputnya adalah : (M,D,A,K,G,F,J,H,L,P,N,O,S,W,T,U) ini adalah nilai
preOrder.(A,D,F,G,H,J,K,L,M,N,O,P,S,T,U,W) ini nilai inOrder .Penyebabnya karena
sintak PohonBiner.InOrder(PohonBiner.akar) penjelasanya objek pohon biner mengakses
method inOrder mengeluarkan nilai objek pohon biner mengakses method inOrder
mengeluarkan nilai.
3. Praktikum 2 outputnya adalah : (M,D,A,K,G,F,J,H,L,P,N,O,S,W,T,U) ini adalah nilai
preOrder.(A,D,F,G,H,J,K,L,M,N,O,P,S,T,U,W) ini nilai inOrder
.(A,F,J,G,L,K,D,O,N,U,T,W,S,P,M) ini nilai postOlder Penyebabnya karena sintak
PohonBiner.postOrder(PohonBiner.akar); penjelasannya objek pohon biner mengakses
method postOrder mengeluarkan nilai postOrder (Pohonbiner mengakses ) maka
outputnya nilai postOrder.
D. Listing Program

Praktikum 1
1. class simpul {
2. public
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);

Output
Praktikum 2

1. public
2. class simpul {
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);
81. PohonBiner.inOrder(PohonBiner.akar);

Output
Praktikum 3

1. public
2. class simpul {
3. String elemen;
4. simpul kiri;
5. simpul kanan;
6. public
7. void ngisiElemen(String ELEMEN) {
8. elemen = ELEMEN;
9. }
10. }
11. class pohon {
12. public simpul akar;
13. public
14. void deklarasiPohon() {
15. akar = null;
16. }
17. simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {
18. if (Penunjuk == null) {
19. simpul baru = new simpul();
20. baru.ngisiElemen(ELEMEN);
21. baru.kiri = null;
22. baru.kanan = null;
23. Penunjuk = baru;
24. return(Penunjuk);
25. }
26. else {
27. if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
28. Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);
29. return(Penunjuk);
30. }
31. else {
32. Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);
33. return(Penunjuk);
34. }
35. }
36. }
37.
38. void preOrder(simpul Penunjuk) {
39. if (Penunjuk !=null) {
40. System.out.print(Penunjuk.elemen + ",");
41. preOrder(Penunjuk.kiri);
42. preOrder(Penunjuk.kanan);
43. }
44. }
45. void inOrder(simpul Penunjuk) {
46. if(Penunjuk !=null) {
47. inOrder(Penunjuk.kiri);
48. System.out.print(Penunjuk.elemen + ",");
49. inOrder(Penunjuk.kanan);
50. }
51. }
52. void postOrder (simpul Penunjuk) {
53. if(Penunjuk != null) {
54. postOrder(Penunjuk.kiri);
55. postOrder(Penunjuk.kanan);
56. System.out.print(Penunjuk.elemen + ",");
57. }
58. }
59. }
60. class ProgramPohonBiner {
61. public static void main(String[] args) {
62. pohon PohonBiner = new pohon();
63. PohonBiner.deklarasiPohon();
64. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");
65. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");
66. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");
67. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");
68. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");
69. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");
70. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");
71. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");
72. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");
73. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");
74. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");
75. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");
76. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");
77. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");
78. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");
79. PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");
80. PohonBiner.preOrder(PohonBiner.akar);
81. PohonBiner.inOrder(PohonBiner.akar);
82. PohonBiner.postOrder(PohonBiner.akar);

Output
Latihan

import java.util.Scanner;

class simpul {

public

String elemen;

simpul kiri;

simpul kanan;

public void ngisiElemen(String ELEMEN) {

elemen = ELEMEN;

class pohon {

public simpul akar;

public void deklarasiPohon() {

akar = null;

simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {

if (Penunjuk == null) {

simpul baru = new simpul();

baru.ngisiElemen(ELEMEN);

baru.kiri = null;

baru.kanan = null;

Penunjuk = baru;

return(Penunjuk);

else {

if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {
Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);

return(Penunjuk);

else {

Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);

return(Penunjuk);

public void preOrder(simpul Penunjuk) {

if (Penunjuk !=null) {

System.out.print(Penunjuk.elemen + ",");

preOrder(Penunjuk.kiri);

preOrder(Penunjuk.kanan);

public void inOrder(simpul Penunjuk) {

if(Penunjuk !=null) {

inOrder(Penunjuk.kiri);

System.out.print(Penunjuk.elemen + ",");

inOrder(Penunjuk.kanan);

public void postOrder (simpul Penunjuk) {

if(Penunjuk != null) {

postOrder(Penunjuk.kiri);

postOrder(Penunjuk.kanan);

System.out.print(Penunjuk.elemen + ",");
}

class ProgramPohonBiner1 {

public static void main(String[] args) {

String pilihan;

Scanner m = new Scanner(System.in);

pohon PohonBiner = new pohon();

System.out.println("================================");

System.out.println("Key");

System.out.println(" A = PreOrder");

System.out.println("");

System.out.println(" B = inOrder");

System.out.println("");

System.out.println(" C = postOrder");

System.out.println("");

System.out.println("================================");

System.out.println("Masukan Pilihan Anda :");

pilihan = m.nextLine();

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");


PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");

switch(pilihan) {

case "A":

System.out.println("PreOrder");

PohonBiner.preOrder(PohonBiner.akar);

System.out.println("");

break;

case "B":

System.out.println("inOrder");

PohonBiner.inOrder(PohonBiner.akar);

System.out.println("");

break;

case "C":

System.out.println("postOrder");

PohonBiner.postOrder(PohonBiner.akar);

System.out.println("");

break;

default:

System.out.println("eror");

}
Output
Tugas

package tree;

import java.util.Scanner;

class simpul {

public

String elemen;

simpul kiri;

simpul kanan;

public void ngisiElemen(String ELEMEN) {

elemen = ELEMEN;

class pohon {

public simpul akar;

public void deklarasiPohon() {

akar = null;

simpul tambahSimpul(simpul Penunjuk, String ELEMEN) {

if (Penunjuk == null) {

simpul baru = new simpul();

baru.ngisiElemen(ELEMEN);

baru.kiri = null;

baru.kanan = null;

Penunjuk = baru;

return(Penunjuk);

}
else {

if (ELEMEN.compareTo(Penunjuk.elemen) < 0) {

Penunjuk.kiri = tambahSimpul (Penunjuk.kiri, ELEMEN);

return(Penunjuk);

else {

Penunjuk.kanan = tambahSimpul(Penunjuk.kanan, ELEMEN);

return(Penunjuk);

public void preOrder(simpul Penunjuk) {

if (Penunjuk !=null) {

System.out.print(Penunjuk.elemen + ",");

preOrder(Penunjuk.kiri);

preOrder(Penunjuk.kanan);

public void inOrder(simpul Penunjuk) {

if(Penunjuk !=null) {

inOrder(Penunjuk.kiri);

System.out.print(Penunjuk.elemen + ",");

inOrder(Penunjuk.kanan);

}
public void postOrder (simpul Penunjuk) {

if(Penunjuk != null) {

postOrder(Penunjuk.kiri);

postOrder(Penunjuk.kanan);

System.out.print(Penunjuk.elemen + ",");

public class tree {

public static void main(String args[]) {

pohon PohonBiner = new pohon();

Scanner m = new Scanner(System.in);

boolean running =true;

String jawab;

tree Naik = new tree();

Naik.tampilmenu();

while(running) {

System.out.println("Apakah Kamu ingin keluar?");

System.out.print("Jawab [ya/tidak] ");

jawab = m.nextLine();

if( jawab.equalsIgnoreCase("ya") ){

running = false;

System.out.print("Terima Kasih Semoga Hari Mu Menyenangkan :)");

else if(jawab.equalsIgnoreCase("tidak")){

Naik.tampilmenu();
}

else{

System.out.println("Error");

public void tampilmenu() {

String pilihan;

Scanner m = new Scanner(System.in);

pohon PohonBiner = new pohon();

System.out.println("================================");

System.out.println("Key");

System.out.println(" A = PreOrder");

System.out.println("");

System.out.println(" B = inOrder");

System.out.println("");

System.out.println(" C = postOrder");

System.out.println("");

System.out.println("================================");

System.out.println("Masukan Pilihan Anda :");

pilihan = m.nextLine();

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "M");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "P");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "D");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "A");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "S");


PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "K");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "N");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "G");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "O");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "L");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "W");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "F");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "J");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "T");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "H");

PohonBiner.akar = PohonBiner.tambahSimpul(PohonBiner.akar, "U");

switch(pilihan) {

case "A":

System.out.println("PreOrder");

PohonBiner.preOrder(PohonBiner.akar);

System.out.println("");

break;

case "B":

System.out.println("inOrder");

PohonBiner.inOrder(PohonBiner.akar);

System.out.println("");

break;

case "C":
System.out.println("postOrder");

PohonBiner.postOrder(PohonBiner.akar);

System.out.println("");

break;

default:

System.out.println("eror");

Anda mungkin juga menyukai