Binary Trees adalah parent

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (10) tree manipulation
Advertisements

Deklarasi Class Kelas pada Java dideklarasikan dengan menggunakan kata kunci class. Contoh : class Mobil { String warna; int thn_prod; } Mobil Data :
Malang,22 November 2012
 public static void main(String[] args) {  int bil1=3;  do {  System.out.print(bil1+",");  bil1=bil1+4;  }  while(bil1

Variabel di Java Variabel merupakan sebuah tempat untuk menyimpan data. Di Java setiap pembuatan variabel harus ditentukan tipe.
Array.
LINKED LIST.
Universitas Muhammadiyah Malang Fakultas Teknik Jurusan Teknik Informatika Semester Genap Nur hayatin, S.ST.
Package As’ad Djamalilleil
BAB 9 TREE Tujuan Instruksional Umum:
Workshop SCS: Java Game Programming
Pemrograman Berorientasi Objek
Modul 3: Kendali program dan teknik penyimpanan data
By : Fitroh Amaluddin & Galih Wasis W.
Struktur Kontrol.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pengenalan Pemrograman 1 Versi 2.0 Struktur kontrol.
Implementasi Binary Tree
KONTROL ALUR EKSEKUSI PROGRAM
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
INHERITANCE.
PEMROGRAMAN BERORIENTASI OBJEK
Tree.
Struktur Kontrol.
Tree Yuliana S.
Nandang Hermanto PK2 Pertemuan 3. Perulangan Pernyataan while Pernyataan do..while Pernyataan for.
Pengenalan Pemrograman 1 Versi 2.0 Struktur kontrol.
Algoritma dan Struktur Data
- PERTEMUAN 4 - PERULANGAN
Flow Control & Looping Pertemuan 4 Pemrograman Berbasis Obyek Oleh Tita Karlita.
PELATIHAN JAVA FUNDAMENTAL
Struktur Data List Linear : Linked List (Double Linkedlist)
ADT Tree 2007/2008 – Ganjil – Minggu 8.
Binary Search Tree 2007/2008 – Ganjil – Minggu 9.
Struktur Kontrol Pemilihan
Tenia Wahyuningrum, S.Kom. MT
Struktur Data List Linear : Linked List (Single Linkedlist)
Public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel...");
STRUKTUR DATA tree manipulation
BINARY TREE Universitas Ahmad Dahlan
1 Pertemuan Tree Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
Binary Tree Rinta Kridalukmana.
Struktur kontrol.
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1
Perulangan (Iteration)
Manipulasi String dengan Kelas String dan StringBuffer
Pertemuan 10 Binary Search Tree
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Struktur Data Tree Eka Rahayu S. (2 Agustus 2011).
Binary Tree.
Binary Tree.
Stack (Tumpukan) Pertemuan 4 Season 1
PENGENDALI PROGRAM 1 Pokok bahasan :
Manipulasi Tree.
TREE KELOMPOK 7 HUSNATUL WILDA ( ) MISRIANA ( )
STRUKTUR DATA Tree (Struktur Pohon).
STRUKTUR DATA 2014 M. Bayu Wibisono.
Manipulasi Tree.
Parts of a Tree.
Algoritma dan Struktur Data
Oleh Shoffin Nahwa Utama, S.Kom
IT234 Algoritma dan Struktur Data
IT234 Algoritma dan Struktur Data
Pohon Biner.
IT234 Algoritma dan Struktur Data
TREE Oleh : Neny silvia Nurhidayah Afny wilujeng Setyorini
Transcript presentasi:

Binary Trees 53 30 72 14 39 61 84 9 23 34 47 79 30 adalah parent Dari 14 dan 39 Level 0 Root 53 Garis putus-putus adalah path 14 adalah child kiri dari 30 30 72 Level 1 39 adalah child kanan dari 30 14 39 61 84 Level 2 9 23 34 47 79 Level 3 Subtree dengan 14 Sebagai root-nya

Terminologi Path Bayangkan seperti orang yang berjalan dari node ke node melalui garis yang menghubungkannya. Garis-garis penghubung yang delewati itulah yang dinamakan dengan path. Root Node pada posisi paling atas disebut root. Dalam sebuah tree hanya terdapat satu root saja. Parent Setiap node (kecuali root) mempunyai cabang yang menguhubungkan tepat satu node lain di atasnya. Node di atasnya inilah yang disebut parent. Child Setiap node bisa mempunyai satu atau lebih cabang yang menghubungkan ke node lainnya. Node di bawahnya inilah yang disebut dengan child.

Leaf Node yang tidak mempunyai child disebut dengan leaf. Dalam sebuah tree hanya ada satu root saja tetapi bisa mempunyai banyak leaf. Subtree Setiap node bisa dipertimbangkan menjadi root nya subtree, yang terdiri dari beberapa children, dan children nya children. Visiting Sebuah node dikatakan dikunjungi ketika kendali program sampai pada sebuah node, biasanya untuk tujuan menyelesaikan beberapa operasi pada node, seperti mengecek nilai datanya kemudian menampilkannya.

Traversing Traverse maksudnya mengunjungi semua node dalam tree untuk tujuan tertentu, misalnya: untuk mengurutkan datanya. Level Level node adalah banyaknya generasi node yang dihitung mulai dari root. Jika kita mengasumsikan bahwa root adalah level 0, maka children adalah level 1, grandchildren adalah level 2, dan seterusnya. Key Medan data dalam sebuah objek biasanya didesain dengan menggunakan sebuah key. Nilai dari key ini digunakan untuk melakukan pencarian data atau operasi lainnya.

Tree menggunakan Java class Node { int iData; // data yang digunakan sebagai kunci double fData; // data lain node leftChild; // node child kiri node rightChild; // node child kanan public void displayNode() // (bagian dari tubuh method) }

class Tree { private Node root; // satu-satunya medan data dalam tree public void find(int key) } public void insert(int id, double dd) public void delete(int id) // macem-macem methode lain } // akhir dari kelas tree

class TreeApp { public static void main(String[] args) Tree theTree = new Tree; // membuat sebuah tree theTree.insert(50, 1.5); // sisipkan 3 node theTree.insert(25, 1.7); theTree.insert(75, 1.9); node found = theTree.find(25); // cari node dengan key 25 if(found != null) System.out.println(“Found the node with key 25”); else System.out.println(“Could not find node with key 25”); } // akhir main() } // akhir class TreeApp

Pencarian Node 56 < 63 63 27 56 > 27 80 56 > 51 13 51 70 92 26 33 58 56 < 58 82 56 < 57 57 60 Pencarian Node 56

Method Pencarian public Node find(int key) // pencarian node berdasarkan key { // (asumsi tree tidak kosong) Node current = root; // mulai dari root while(current.iData != key) // selama tidak cocok, { if(key < current.iData) // ke kiri? current = current.leftChild; else current = current.rightChild; // atau ke kanan? if(current == null) // jika tidak ada child, return null; // tidak ditemukan } return current; // ditemukan

Penyisipan Node 45 < 60 60 40 45 > 40 45 < 50 30 50 null 45

Method Penyisipan Node public void insert(int id, double dd) { Node newNode = new Node(); // membuat node baru newNode.iData = id; // sisipkan datanya newNode.dData = dd; if(root==null) // di root tidak ada node root = newNode; else // sebagai root Node current = root; // mulai dari root Node parent; while(true) // parent = current; if(id < current.iData) // ke kiri? current = current.leftChild;

if(current == null) // jika sampai pada baris terakhir, { // sisipkan di sebelah kiri parent.leftChild = newNode; return; } } // berhenti jika ke kiri else // atau ke kanan? { current = current.rightChild; if(current == null) // jika sampai pada baris terakhir { // sisipkan di sebelah kanan parent.rightChild = newNode; } // akhir dari else ke kanan } // akhir dari while } // akhir dari else bukan root } // akhir class insert() // -------------------------------------------------------------

Pencarian Nilai Minimum Pencarian Nilai Minimum 63 47 71 22 53 67 minimum 11 33 50 60 17 49 51 Pencarian Nilai Minimum

public Node minimum() // kembalikan node dengan nilai kunci minimum { Node current, last; current = root; // mulai dari root while(current != null) // sampai node paling bawah, last = current; // ingat node-nya current = current.leftChild; // belok ke child kiri } return last;

Method Delete Node yang dihapus adalah leaf (tidak punya child) Node yang dihapus mempunyai satu child Node yang dihapus mempunyai dua child

Penghapusan Node Tanpa Child 10 5 3 7 Penghapusan Node Tanpa Child

public boolean delete(int key) // hapus node { // (asumsi tree tidak kosong) Node current = root; Node parent = root; boolean isLeftChild = true; while(current.iData != key) // mencari node { parent = current; if(key < current.iData) // ke kiri? isLeftChild = true; current = current.leftChild; } else // atau ke kanan? isLeftChild = false; current = current.rightChild; if(current == null) // akhir baris node, return false; // tidak ditemukan } // akhir while //ditemukan node untuk dihapus //selanjutnya...

// kelanjutan delete()… // jika tidak ada chile, langsung hapus if(current.leftChild==null && current.rightChild==null) { if(current == root) // jika root, root = null; // tree kosong else if(isLeftChild) parent.leftChild = null; // putuskan else // dari parent parent.rightChild = null; } // continues...