Contoh BFS dan DFS Menggunakan Inputan di Java Netbeans | Pemrograman Java

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");
    }
}

Output:


Semoga bermanfaat dan tolong gunakan secara bijak.
Jika ingin meng-copy paste atau menduplicate, tolong sertakan alamat sumbernya terima kasih (kumanmerah.blogspot.com).
Artikel Selanjutnya
Post Terkait :
Pemrograman Java