Berikut contoh syntax BFS (Breadth First Search / Queue) dan DFS (Deep First Search / Stack) :
Apa itu BFS?
BFS adasebuah metode pencarian yang bertujuan untuk memperluas dan memeriksa semua node dari sebuah graf atau kombinasi dari urutan dengan menggunakan suatu solusi secara sistematis. dengan kata lain, bfs mencari ke seluruh graf atau urutan secara mendalam tanpa mempertimbangkan tujuannya sampai tujuan tersebut tercapai.
Kelebihan BFS adalah sebagai berikut :
- Tidak akan pernah menemui jalan yang buntu.
- Akan menjamin ditemukanya solusi dan solusi yang akan ditemukan pasti paling bagus.
- Jika hanya ada satu solusi maka BFS akan menemukan solusi tersebut.
Kekurangan BFS adalah sebagai berikut :
- Membutuhkan memori yang cukup besar.
- Membutuhkan waktu yang lama.
Contoh BFS dan DFS menggunakan Inputan di Java NetBeans.
Copy script dibawah:
package bfs_dan_dfs; import java.util.Scanner; import java.util.Stack; class BT { node root; public void insert(node newNode) { if (root == null) root = newNode; else root.insert(newNode); } } class node { int data; node kanan,kiri,parent; public node(int newData) {this.data = newData;} public void setLeft(node otherNode) { this.kiri = otherNode; otherNode.parent = this; } public void setRight(node otherNode) { this.kanan = otherNode; otherNode.parent = this; } public void insert(node otherNode) { if (otherNode.data > this.data) { // ke kanan if (this.kanan == null) this.setRight(otherNode); else this.kanan.insert(otherNode); } else { // ke kiri if (this.kiri == null) this.setLeft(otherNode); else this.kiri.insert(otherNode); } } } public class Bfs_karo_dfs { public static boolean search(BT binari,int cari,boolean method){ boolean hsl; Stack stack= new Stack(); stack.push(binari.root); do{ node a; if (method==true) a = (node) stack.pop(); //ini DFS else a = (node) stack.remove(0); //ini BFS if (a.data==cari) return true; if (a.kanan!=null) stack.push(a.kanan); if (a.kiri!=null) stack.push(a.kiri); }while(!stack.empty()); return false; } public static void main(String[] args) { BT binari = new BT(); binari.insert(new node(4)); binari.insert(new node(8)); binari.insert(new node(6)); binari.insert(new node(2)); binari.insert(new node(7)); binari.insert(new node(3)); binari.insert(new node(5)); System.out.print("masukno angka :"); int cari =new Scanner(System.in).nextInt(); //search(binary tree, angka yg dicari, true=DFS false=BFS); if (search(binari,cari,false)) System.out.println("ada"); else System.out.println("tak ada"); } }