Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

53 30 1439 923 3447 72 6184 79 Binary Trees Root Garis putus-putus adalah path Subtree dengan 14 Sebagai root-nya 30 adalah parent Dari 14 dan 39 39 adalah.

Presentasi serupa


Presentasi berjudul: "53 30 1439 923 3447 72 6184 79 Binary Trees Root Garis putus-putus adalah path Subtree dengan 14 Sebagai root-nya 30 adalah parent Dari 14 dan 39 39 adalah."— Transcript presentasi:

1

2 Binary Trees Root Garis putus-putus adalah path Subtree dengan 14 Sebagai root-nya 30 adalah parent Dari 14 dan adalah child kanan dari adalah child kiri dari 30 Level 0 Level 1 Level 2 Level 3

3 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.

4 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.

5 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.

6 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) }

7 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

8 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

9 Pencarian Node 56 < > > < < 57 Pencarian Node 56

10 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 }

11 null Penyisipan Node 45 < > < 50 Penyisipan Node 45

12 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;

13 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; return; } } // akhir dari else ke kanan } // akhir dari while } // akhir dari else bukan root } // akhir class insert() //

14 Pencarian Nilai Minimum minimum

15 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; }

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

17 Penghapusan Node Penghapusan Node Tanpa Child

18 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... }

19 // 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...


Download ppt "53 30 1439 923 3447 72 6184 79 Binary Trees Root Garis putus-putus adalah path Subtree dengan 14 Sebagai root-nya 30 adalah parent Dari 14 dan 39 39 adalah."

Presentasi serupa


Iklan oleh Google