Documente Academic
Documente Profesional
Documente Cultură
2. Apa tipe data yang dapat disimpan di node Program Latihan Praktikum 9.1? Jika
ingin menyimpan data yang berupa String bagian kode program manakah yang
harus diganti?
Jawab:
Tipe datanya adalah integer dapat dilihat pada code berikut ini
class Node {
int data;
Jika Ingin menyimpan data berupa String Maka code yang harus diganti:
Kemudian tinggal uji coba dengan String huruf atau kata pada method main
9.8 Kesimpulan
Binary Tree adalah Tree yang masing-masing nodenya menunjuk paling
banyak 2 node yang lain, dimana sebuah node hanya bisa mempunyai satu
parent dan punya child paling banyak 2. Root adalah node yang memiliki
hirarki tertinggi dan dibentuk pertama kali sehingga tidak memiliki
parent. Cara penelusuran node pada binary tree yaitu preorder, inorder
dan postorder.
9.9 Latihan
1. Tambahkan method untuk menghitung banyaknya node pada Binary Tree
Jawab:
Pada class Tree tambahkan variable jumlah, Lalu tambahkan variabelr jumlah++
di method sisipDtNode sebab jika terdapat penambahan node maka jumlah node
awal akan berubah. Kemudian tinggal kita buat method untuk menghitung jumlah
nodenya Lalu tinggal kita panggil dan cetak di class main
4. Tambahkan method panjang yang menerima suatu pohon biner dan menentukan
berapa level yang dimiliki pohon tersebut.
Jawab:
//Method mendapatkan panjang dari tree
private int setPanjang(int p) {
this.panjang = p;
int a = this.HitungTinggi() - this.Hitunglevel();
return a;
}
private int getPanjang() {
return panjang;
}
// Method Hitung level pohon
public int Hitunglevel() {
return Hitunglevel(root);
}
private int Hitunglevel(Node node) {
if (node != null) {
int a = Hitunglevel(node.nodeKiri);
int b = Hitunglevel(node.nodeKanan);
if (a > b) {
return a = a + 1;
} else {
return b = b + 1;
}
} else {
return -1;
}
}
Program Completenya
Output
9.10 Tugas
1. Buatlah program Complete Binary Tree dengan menggunakan array.
Jawab:
Program Latihan Praktikum 9.1 Tugas Array
1 /** @author BIMA*/
2 import java.util.Random;
3 public class TreeArray {
4 static int pAkhir = 0;
5 static int nData = 0;
6 static Integer a[];
7 int templevel = 1;
8 int n = 1;
9
10 public static void display(int x) {
11 System.out.print("[" + a[x] + "] ");
12 }
13
14 static boolean isEmpty() {
15 return (nData == 0);
16 }
17
18 private void sisipData(int dt, int x) {//method menambah data
19 n = x;
20 if (a[1] == null) {//jika
21 a[1] = new Integer(dt);
22 } else {
23 if (dt < a[n].intValue()) {
24 if (a[n * 2] == null) {
25 a[n * 2] = new Integer(dt);
26 nData++;
27 if (n * 2 > pAkhir) {
28 pAkhir = n * 2;
29 }
30 } else {
31 n = n * 2;
32 sisipData(dt, n);
33 }
34 } else if (dt > a[n].intValue()) {
35 if (a[n * 2 + 1] == null) {
36 a[n * 2 + 1] = new Integer(dt);
37 nData++;
38 if (n * 2 + 1 > pAkhir) {
39 pAkhir = n * 2 + 1;
40 }
41 } else {
42 n = n * 2 + 1;
43 sisipData(dt, n);
44 }
45 }
46 }
47 }
48
49 static void addNode(int i, int isi) {
50 a[i] = new Integer(isi);
51 nData++;
52 pAkhir = i;
53 }
54
55 public static void inorderTraversal(Integer array[], int akhir) {
56 a = array;
57 pAkhir = akhir;
58
59 if (!isEmpty()) {
60 inorder(1);
61 } else {
62 System.out.println("Kosong");
63 }
64 }
65
66 static void inorder(int x) {
67 if (x <= pAkhir && a[x] != null) {
68 inorder(2 * x);
69 display(x);
70 inorder(2 * x + 1);
71 }
72 }
73
74 public static void preorderTraversal(Integer array[], int akhir) {
75 a = array;
76 pAkhir = akhir;
77
78 if (!isEmpty()) {
79 preorder(1);
80 } else {
81 System.out.println("Binary Tree Kosong");
82 }
83 }
84
85 static void preorder(int x) {
86 if (x <= pAkhir && a[x] != null) {
87
88 display(x);
89 preorder(2 * x);
90 preorder(2 * x + 1);
91 }
92 }
93
94 public static void postorderTraversal(Integer array[], int akhir) {
95 a = array;
96 pAkhir = akhir;
97
98 if (!isEmpty()) {
99 postorder(1);
100 } else {
101 System.out.println("Binary Tree Kosong");
102 }
103 }
104
105 static void postorder(int x) {
106 if (x <= pAkhir && a[x] != null) {
107
108 postorder(2 * x);
109 postorder(2 * x + 1);
110 display(x);
111 }
112 }
113
114 public int jumlahNode() {
115 int jmlNode = 0;
116 for (int i = 1; i <= pAkhir; i++) {
117 if (a[i] != null) {
118 jmlNode++;
119 }
120 }
121 return jmlNode;
122 }
123
124 public int jumlahDaun() {
125 int jmlDaun = 0;
126 for (int i = 1; i <= pAkhir; i++) {
if (a[i] != null && a[i * 2] == null && a[i * 2 + 1] ==
127 null){
128 jmlDaun++;
129 }
130 }
131 return jmlDaun;
132 }
133
134 public int hitunglevel() {
135 int bantuLevel = pAkhir;
136 int level = -1;
137 while (a[bantuLevel] != null) {
138 bantuLevel /= 2;
139 level++;
140 }
141 return level;
142 }
143
144 public int tinggi() {
145 return hitunglevel() + 1;
146 }
147
148 public static void main(String args[]) {
149 TreeArray Pohon = new TreeArray();
150 int nilai;
151 a = new Integer[1000];
152 Random randomNumber = new Random();
153 System.out.println("Data : ");
154 for (int i = 0; i < 10; i++) {
155 nilai = randomNumber.nextInt(100);
156 System.out.print(nilai + " ");
157 Pohon.sisipData(nilai, 1);
158 }
159 System.out.println("\n\nPreorder traversal :");
160 Pohon.preorderTraversal(a, pAkhir);
161
162 System.out.println("\n\nInorder traversal :");
163 Pohon.inorderTraversal(a, pAkhir);
164
165 System.out.println("\n\nPostorder traversal :");
166 Pohon.postorderTraversal(a, pAkhir);
167 System.out.println();
168
169 System.out.print("\n\nJumlah node pada binary tree adalah : ");
170 System.out.println(Pohon.jumlahNode());
171
172 System.out.print("Banyak daun : ");
173 System.out.println(Pohon.jumlahDaun());
174
175 System.out.print("Tinggi Tree : ");
176 System.out.println(Pohon.tinggi());
177
178 System.out.print("level Tree : ");
179 System.out.println(Pohon.hitunglevel());
180
181 }
182 }
Output