Download - Binary Search Tree

Transcript
  • Binary Search TreeTeknik Informatika - Universitas Muhammadiyah Malang (UMM)Tahun Akademik 2010-2011Oleh : Nur Hayatin, S.ST

  • Sub TopikHeap TreeBinary Search TreeAVL TreeRed-Black Tree

  • Heap Tree

  • *Heap TreeDefinisi :Heap tree adalah pohon biner yang tiap node nya memenuhi heap property.Heap Property :Kondisi 1:Nilai pada node induk harus lebih besar ( > ) atau lebih besar sama dengan ( >= ) dari node anak.Kondisi 2:Nilai pada node induk harus lebih besar ( < ) atau lebih besar sama dengan (
  • *Contoh Heap Tree128312812Node 12 memiliki properti heap12814Node 12 tidak memiliki properti heapNode 12 memiliki properti heap

  • *Sift UpPenukaran posisi node induk terhadap node anak yang nilainya paling besar sehingga binary tree memenuhi heap property.

    Proses ini disebut juga sifting up

  • Sift UpProses sift up ini dilakukan berulang kali hingga :Node berada di posisi yang tepat dalam arti nilai node tsb masih lebih kecil daripada node induknya, atauProsesnya telah sampai pada node root

  • Jenis Heap TreeBerdasarkan Heap Property :Max heap treeMin heap tree

  • Max Heap TreeNilai node induk (root) lebih besar atau sama dengan nilai subtree. (heap property kondisi 1)

  • Contoh max heap tree

  • Min Heap TreeNilai dari node induk (root) lebih kecil atau sama dengan nilai dari subtree. (heap property kondisi 2)

  • Contoh min heap tree

  • Representasi Heap TreeRepresentasi Heap Tree lebih efisien menggunakan Array.

  • 987672651123456789100Contoh representasi heap tree

  • Aturan Penambahan NodePenambahan node baru di posisi paling kiri pada level terbawah.Jika level terbawah penuh, tambahkan node pada level baru.Harus mengikuti aturan heap property. Jika tidak lakukan sift up.

  • *Contoh Penambahan NodeContoh 1 : penambahan node dari cabang kiri ke kananContoh 2 : Penambahan nodepada level baru

  • Penambahan Node Pada Max Heap Tree

  • Penambahan Node BaruComplete binary tree with 10 nodes.

  • Penambahan Node(5)New element is 5.98672651775

  • Penambahan Node(20)New element is 20.98672651777

  • Sifting Up(7)New element is 20.98672651777

  • Sifting Up(8)New element is 20.98672651777

  • Hasil Penambahan Node(20)New element is 20.9867265177720

  • Penambahan Node(15) ????New element is 15.9867265177720

  • Sifting Up(8)New element is 15.98672651777208

  • Sifting Up(9)New element is 15.86726517772089

  • Hasil Penambahan Node(15)New element is 15.8672651777208915

  • Penghapusan Max NodeMax element is in the root.

  • Removed RootAfter max element is removed.86726517778915

  • Sifting Up(15)Reinsert 15 into the heap.6726517779158

  • Sifting Up(9)Reinsert 9 into the heap.6726517779158

  • Sifting Up(8)Reinsert 8 into the heapMax element is 15.6726517779158

  • Penghapusan Max NodeAfter max element is removed.67265177798

  • Sifting Up(9)626517987

  • Sifting Up(8)6265179878

  • Sifting Up(7)626517987

  • Hasil Remove Max Element (15)6265179877

  • Latihaninput array = [-, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

  • Max Heap TreeStart at rightmost array position that has a child.8476789371011152

  • Sifting up(11)Move to next lower array position.8476789371015112

  • Initializing A Max Heap8476789371015112

  • Initializing A Max Heap8976784371015112

  • Initializing A Max Heap8976784371015112

  • Initializing A Max Heap8976384771015112

  • Initializing A Max Heap8976384771015112

  • Initializing A Max Heap897638477101511Find a home for 2.

  • Initializing A Max Heap8976384775111Find a home for 2.10

  • Initializing A Max Heap8976384772111Done, move to next lower array position.105

  • Initializing A Max Heap8976384772111105Find home for 1.

  • 11Initializing A Max Heap8976384772105Find home for 1.

  • Initializing A Max Heap897638477211105Find home for 1.

  • Initializing A Max Heap897638477211105Find home for 1.

  • Hasil Akhir897638477211105Done.1

  • Binary Search Tree(BST)

  • DefinisiSebuah binary tree dimana subtree sebelah kiri lebih kecil dari subtree sebelah kanan.

  • Contoh BST

  • Binary Search TreeOperasi BST : penambahan, penghapusan, pencarian node tertentu, pencarian niai terkecil dan pencarian nilai terbesar.

    Properti Binary Search Tree :Untuk setiap node X, semua elemen di subpohon kirinya bernilai lebih kecil dari nilai X dan semua elemen di subpohon kanannya bernilai lebih besar dari nilai X.

  • ContohBinary Search TreeBukan Binary Search Tree

  • InsertDimulai dengan penelusuran dari root untuk mencari posisi yang tepat. Jika elemen X ditemukan (berarti X sudah ada di BST), maka tidak perlu melakukan aksi apapun.Jika tidak, maka letakkan X sebagai node terakhir pada jalur penelusuran

    Time complexity = O(height of the tree)

  • DeleteSaat akan menghapus sebuah node, kita juga harus memikirkan seluruh node anak dari node tsb.Hal penting adalah agar pohon setelah dihapus tetap merupakan BST.

  • Operasi Penghapusan / remove()Ada 3 kasus : Elemen ada di leaf/daun. Elemen yang memiliki degree 1. Elemen yang memiliki degree 2.

  • Penghapusan Node Daun (Node 7)Remove a leaf element. key = 7

  • Penhapusan Node Daun (Node 35)Remove a leaf element. key = 35

  • Penghapusan Node Ber-degree 1 Remove from a degree 1 node. key = 40

  • Penghapusan Node Ber-degree 1Remove from a degree 1 node. key = 15

  • Penghapusan Node Ber-degree 2Remove from a degree 2 node. key = 10

  • Remove From A Degree 2 Node201062815403025Replace with largest key in left subtree (or smallest in right subtree).35718

  • Penghapusan Node Ber-degree 2201062815403025Replace with largest key in left subtree (or smallest in right subtree).35718

  • Penghapusan Node Ber-degree 220862815403025Replace with largest key in left subtree (or smallest in right subtree).35718

  • LatihanRemove from a degree 2 node. key = 20

  • Penghapusan Node Ber-degree 2201062815403025Replace with largest in left subtree.35718

  • Penghapusan Node Ber-degree 2201062815403025Replace with largest in left subtree.35718

  • Penghapusan Node Ber-degree 2181062815403025Replace with largest in left subtree.35718

  • Hasil Akhir181062815403025357

  • Pencarian pada BSTJika mencari elemen bernilai 15, maka akan langsung ditemukan.Jika mencari elemen bernilai < 15, maka kita cari di subpohon kiri.Jika mencari elemen bernilai > 15, maka kita cari di subpohon kanan.

  • findMin/ findMaxfindMin : mengembalikan node dengan elemen terkecil pada BSTPencarian dimulai dari root dan bergerak ke kiri terus sepanjang subpohon kiri dan berhenti pada elemen terakhir.

    Proses serupa terhadap metode findMax

  • Red-Black Tree

  • Struktur Data - Tree*Red-Black TreeRed-black tree adalah binary search tree yang memenuhi properti sbb :Setiap node adalah red atau blackNode root adalah blackSetiap daun adalah blackSemua anak dari node red adalah blackSetiap jalur (path) dari sebuah node ke daun berisi node black yang jumlahnya sama

    Struktur Data - Tree

  • Struktur Data - Tree*Contoh Red-Black Tree

    Struktur Data - Tree

  • AVL Tree

  • AVL TreeAVL Properti :Sebuah node memiliki AVL property jika height (tinggi) subpohon kiri & subpohon kanan node tsb sama atau berbeda 1.Height (tinggi) pohon adalah jarak dari root menuju daun terbawah yang dimiliki pohon tsbAVL Tree adalah pohon yang setiap node nya memiliki AVL property

  • PustakaSartaj Sahni , Data Structures & Algorithms, Presentation L1.Mitchell Waite, Data Structures & Algorithms in Java, SAMS, 2001

    *********************************