Algoritmalar. Kırmızı Siyah Ağaçları Red Black Trees. Bahar 2017 Doç. Dr. Suat Özdemir 1

Benzer belgeler
Algoritmalar. İkili Arama Ağaçları. Bahar 2016 Doç. Dr. Suat Özdemir 1

Algoritmalar. DERS 7 Dengeli Arama Ağaçları Kırmızı-siyah ağaçlar Kırmızı-siyah ağacın yüksekliği Rotation / Dönme Insertion / araya yerleştirme

7.Hafta Dengeli Arama Ağaçları (Red - Black Tree)

YZM 2116 Veri Yapıları

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Week 9: Trees 1. TREE KAVRAMI 3. İKİLİ AĞAÇ DİZİLİMİ 4. İKİLİ ARAMA AĞACI 2. İKİLİ AĞAÇ VE SUNUMU > =

Algoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1

Ağaçlar (Trees) Ağaçlar (Trees)

DOSYA ORGANİZASYONU. Ağaç Yapıları ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

YZM 2116 Veri Yapıları

Algoritmalara Giriş Ekim 17, 2005 Massachusetts Institute of Technology Profesörler Erik D. Demaine ve Charles E. Leiserson Dağıtım 15.

Çok Yollu Ağaçlar: B*-Trees B*-Trees

Ağaç Yapıları (Tree Structures) Kütük Organizasyonu 1

Final Sınavı Soruları Bahar 2018

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Problem Seti 4 Çözümler

Ağaç (Tree) Veri Modeli

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

AĞAÇLAR. Doç. Dr. Aybars UĞUR

Algoritmalar. Çizge Algoritmaları. Bahar 2017 Doç. Dr. Suat Özdemir 1

BIL222 Veri Yapıları ve Algoritmalar

BIP116-H14-1 BTP104-H014-1

AĞAÇLAR TREES. Doç. Dr. Aybars UĞUR

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Week 6: Bağlı Liste (Linked List) BAĞLI LİSTE KAVRAMI TEKİL (SINGLE) BAĞLI LİSTE ÇİFT (DOUBLE) BAĞLI LİSTE DAİRESEL (CIRCULAR) BAĞLI LİSTE

YZM 2116 Veri Yapıları

AĞAÇ-TREE VERİ YAPISI

Final Sınavı Örnek Soruları Bahar 2018

Veri Yapıları. Ağaçlar

Veri Yapıları ve Algoritmalar dönem

Algoritmalara Giriş 6.046J/18.401J

6.Hafta Kıyım Fonksiyonu (Hashing), BST. Doğrudan erişim tabloları Çarpışmaları ilmekleme ile çözmek Kıyım fonksiyonu seçimi Açık adresleme

YZM 2116 Veri Yapıları

TRAKYA BİRLİK WEBSİTE YÖNETİM PANELİ. Kullanıcı Dokümantasyonu

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Veri Yapıları. Ağaçlar. Ağaçlar genel bilgi

Bölüm 5. Ağaç. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 73

Algoritmalara Giriş 6.046J/18.401J DERS 2

Algoritmalara Giriş 6.046J/18.401J

DOSYA ORGANİZASYONU. Çarpışma çözümleme yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Akademik Rapor Hazırlama ve Yazışma Teknikleri

4 Ocak 2012 / Çarşamba. Renk uyumunu seçmek için google colorschemedesigner RGB ye tıklayınca bir pencere çıkıyor

1. Giriş HU-GO Web sayfası kullanıcı yüzeyinde kaydolma. Güverte Aracı (OBU) kayıt süreci. İçindekiler

BBM Discrete Structures: Final Exam Date: , Time: 15:00-17:00

#$% &'#(# Konular. Binary Tree Structures. Binary Search Trees AVL Trees Internal Path Reduction Trees Deerlendirme

İçerik: Graflar. Tanım. Gösterim. Dolaşma Algoritmaları. Yönlü ve yönsüz graflar Ağırlıklı graflar. Komşuluk Matrisi Komşuluk Listesi

"IF CLAUSE KALIPLARI"

BMB204. Veri Yapıları Ders 9. B+ Ağacı, Hash, Heap. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

DERS 1. (define YAŞ 14) YAŞ = 14. (define BİR-SAYI 0.6) BİR-SAYI = 0.6. (define HIZ -90) HIZ = -90. İki tane de kendiniz yazın: SINIF = Önyükleme

Ardunio ve Bluetooth ile RC araba kontrolü

EXISTS VE NOT EXISTS fonksiyonları

2.Hafta Algoritmaların Analizi. Araya Yerleştirme Sırlaması (Insert Sort) Birleştirme Sıralaması (Merge Sort ) Yinelemeler

#$% &'#(# Konular. B-Tree and Derivatives. B-Trees B#-Trees B+-Trees Deerlendirme

MAT223 AYRIK MATEMATİK

SONY VEGAS PRO 9 VIDEO TRACKS. Mehmet Mutallip GCGI IEng MIET

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#6: AZALT VE FETHET YÖNTEMİ

HTML Sayfaları. Bütün html sayfaları

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Çok Yollu Ağaçlar (Multi-Way Trees)

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Arasınav Örnek Soruları Bahar 2018

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Bir algoritma aşağıdaki ğ dki özelliklere sahip komutların sonlu bir kümesidir.

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

Algoritmalara Giriş Ekim 31, 2005 Massachusetts Institute of Technology Professors Erik D. Demaine ve Charles E. Leiserson Dağıtım 19.

Web Madenciliği (Web Mining)

1. PL/SQL de kontrol yapıları

Q29.1 Dairesel bir halka şekilde görüldüğü gibi sabit bir manyetik alan içerisine yerleştiriliyor.buna göre indüksiyon emk için ne söylenebilir?

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Cases in the Turkish Language

WEKA ile Veri Önişleme

Dengeli Arama Ağaçları (Balanced Search Tree)

PostgreSQL ve PL/pgSQL

6.Hafta Bilinen Probleme İndirgeme Tasarım Yöntemi

Arasınav Soruları Bahar 2018

WEEK 11 CME323 NUMERIC ANALYSIS. Lect. Yasin ORTAKCI.

function get_style114 () { return "none"; } function end114_ () { document.getelementbyid('all-sufficient114').style.display = get_style114(); }

MICROSOFT WORD Word 2000/II TAB AYARLARI :

Yrd. Doç. Dr. Caner ÖZCAN

YZM 2116 Veri Yapıları

D-Link DSL 500G için ayarları

Yrd. Doç. Dr. Caner ÖZCAN

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#9: AÇGÖZLÜ ALGORİTMALAR

Tanım 8.1.1:Bir T (serbest) ağacı aşağıdaki özelliğisağlayan bir basit çizgedir: Tçizgesindeiki köşevvewise, bu durumdavd köşesinden w köşesine tek

Chapter 8. Komut düzeyi kontrol yapıları ISBN

Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

PostgreSQL ve PL/pgSQL

MICROSOFT WORD Şekil 1 TABLO HAZIRLAMA : Word 2002/II TAB AYARLARI :

Şimdi de kesin bir zorunluluğun bulunmadığını ifade eden cümlelere örnekler verelim:

Lisans. Ayrık Matematik Tanıtlama. Kaba Kuvvet Yöntemi. Konular. Temel Kurallar

#$% &'#(# Konular. Direct File Organization. Progressive Overflow Buckets Linear Quotient Brent s Method Binary Tree

- bilgi@cagsanmerdiven.com.tr

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

Adım Adım SPSS. 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü. Y. Doç. Dr. İbrahim Turan Nisan 2011

Dengeli Arama Ağaçları (Balanced Search Tree)

Transkript:

Algoritmalar Kırmızı Siyah Ağaçları Red Black Trees Bahar 2017 Doç. Dr. Suat Özdemir 1

Kırmızı Siyah Ağaç Red Black Trees (RBT) İkili arama ağaçlarının dengeli versiyonudur Ağaç yüksekliği O(lgn) dir Temel işlemler en kötü durumda O(lgn) zaman alır BSTde bu durum O(n) Bahar 2017 Doç. Dr. Suat Özdemir 2

Kırmızı Siyah Ağaç BST ile aynı veri yapısı key, left, right, ve p. Her düğümde ekstra renk bilgisi vardır (1 bit) - red veya black Tüm boş yapraklar siyah kabul edilir NIL olarak gösterilecek color[nil]= black Kökün parent düğümü de NIL. p[root[t]]=nil Bahar 2017 Doç. Dr. Suat Özdemir 3

RBT - Özellikler Her düğüm siyah veya kırmızı Kök düğüm siyah Her yaprak siyah Eğer bir düğüm kırmızı ise her iki çocuğu da siyah Bir düğümden yapraklara giden her yolda eşit sayıda siyah düğüm bulunur Bahar 2017 Doç. Dr. Suat Özdemir 4

RBT - Örnek 26 17 41 30 47 Her düğümün mutlaka iki çocuğu var Yaprak düğümlerin NIL olan çocukları her zaman gösterilmeyebilir 38 50 nil[t] Bahar 2017 Doç. Dr. Suat Özdemir 5

RBT Siyah Yüksekliği Bir x düğümünün yüksekliği h(x)= yapraklara giden en uzun yol üzerindeki kenar sayısı Bir x düğümün siyah yüksekliği bh(x)= x den yaprağa giden yol üzerindeki siyah düğüm sayısı yapraktaki NIL[T] dahil x düğümü hariç RBT nin siyah yüksekliği kök düğümün siyah yüksekliğine eşittir 5. özellik sayesinde garanti edilir Bahar 2017 Doç. Dr. Suat Özdemir 6

RBT Siyah Yüksekliği 26 h=4 bh=2 Bir x düğümünün yüksekliği h(x)= yapraklara giden en uzun yol üzerindeki kenar sayısı Bir x düğümün siyah yüksekliği bh(x)= x den yaprağa giden yol üzerindeki siyah düğüm sayısı yapraktaki NIL[T] dahil x düğümü hariç bh(x) h(x) 2 bh(x) 17 h=1 bh=1 nil[t] 41 h=2 bh=1 h=1 bh=1 h=3 bh=2 30 47 h=1 bh=1 38 50 Bahar 2017 Doç. Dr. Suat Özdemir 7

Lemma RBT Yüksekliği RBT üzerindeki bir x düğümüden yapraklara olan en uzun yol h(x) ise h(x) x düğümünden yapraklara olan en kısa yolun en çok iki katı uzunlukta olabilir. İspat: x den yapraklara herhangi bir yol üzerinde eşit sayıda siyah düğüm vardır x = bh(x) (özellik 5) ve bu her zaman x in en kısa yolu üzerindeki düğüm sayısından s(x) küçük yada eşittir (özellik 1). Ancak bir yol üzerinde peşpeşe gelen kırmızı düğüm olamaz (özellik 4) ve her yol siyah bir düğümle sonlanır (özellik 3), yani h(x) 2 bh(x) dir Bu nedenle h(x) 2 s(x) olur. Bahar 2017 Doç. Dr. Suat Özdemir 8

RBT Yüksekliği Sınırı Lemma: x düğümünün herhangi bir alt ağacında 2 bh(x) 1 kadar içsel düğüm bulunur İspat: Tümevarım Temel durum: x yapraksa h(x) = 0 bh(x) = 0. Altağacı 2 0 1 = 0 düğüme sahiptir. Tümevarım işlemi: h(x) = h > 0 ve bh(x) = b. X in her çocuğunun yüksekliği h - 1 ve siyah-yüksekliği ya b (çocuk kırmızı) yada b - 1 (çocuk siyah). Tümevarım hipotezine göre, her çocuk 2 bh(x) 1 1 içsel düğüme sahip. x in alt ağacı 2 (2 bh(x) 1 1)+1 = 2 bh(x) 1 içsel düğüme sahip. (+1 x in kendisi için) Bahar 2017 Doç. Dr. Suat Özdemir 9

RBT Yüksekliği Sınırı Lemma: x düğümünün herhangi bir alt ağacında 2 bh(x) 1 kadar içsel düğüm bulunur. İspatlandı Lemma: n düğümden oluşan bir RBT nin yüksekliği en çok 2lg(n+1) olabilir İspat: Üstteki lemmaya göre, n 2 bh 1 bh h/2 olduğu için, n 2 h/2 1 Buna göre h 2 lg(n + 1) olur Bahar 2017 Doç. Dr. Suat Özdemir 10

RBT- Temel İşlemler Tüm işlemler O(lgn) zaman içinde tamamlanır Ağacı değiştirmeyecek tüm işlemler BST de olduğu gibi yapılır Silme ve ekleme kolay değildir Neden? Bahar 2017 Doç. Dr. Suat Özdemir 11

RBT- Rotasyonlar x Left-Rotate(T, x) y y Right-Rotate(T, y) x Bahar 2017 Doç. Dr. Suat Özdemir 12

RBT- Rotasyonlar Ağacı dengede tutmak için yapılırlar Girdi: Ağaç ve bir düğüm Pointerları değiştirerek ağaç yapısını değiştirir BST özelliğini bozmaz Sol ve sağ rotasyonlar birbirinin tersidir x Left-Rotate(T, x) y y Right-Rotate(T, y) x Bahar 2017 Doç. Dr. Suat Özdemir 13

Left-Rotate (T, x) 1. y right[x] // Set y. 2. right[x] left[y] //Turn y s left subtree into x s right subtree. 3. if left[y] nil[t ] 4. then p[left[y]] x 5. p[y] p[x] // Link x s parent to y. 6. if p[x] = nil[t ] 7. then root[t ] y x Left-Rotate(T, x) y 8. else if x = left[p[x]] y Right-Rotate(T, y) x 9. then left[p[x]] y 10. else right[p[x]] y 11. left[y] x // Put x on y s left. 12. p[x] y Bahar 2017 Doç. Dr. Suat Özdemir 14

Rotasyon Sol-rotasyon pseudo kodu right[x] nil[t ] Kökün parenti nil[t ] x düğümü üzerinde yapılan sol-rotasyon x düğümünü y düğümünün sol çocuğu ve y düğümünün sol altağacını x düğümünün sağ alt ağacı yapar Sağ-rotasyon bunun tam tersidir Zaman analizi: Sabit sayıda pointer güncellemesi gerekir Sol ve Sağ rotasyon için O(1) Bahar 2017 Doç. Dr. Suat Özdemir 15

Hatırlatma RBT Özellikler Her düğüm siyah veya kırmızı Kök düğüm siyah Her yaprak siyah Eğer bir düğüm kırmızı ise her iki çocuğu da siyah Bir düğümden yapraklara giden her yolda eşit sayıda siyah düğüm bulunur Bahar 2017 Doç. Dr. Suat Özdemir 16

RBT - Ekleme Ekleme RBT özelliğini bozmamalıdır Eklenen düğümün hangi renge boyanmalıdır? Temel işlemler BST-Insert kullanarak x düğümünü T ağacına ekle RB-Insert(x) Eklenen düğümü kırmızı yap Eklenen ağacı tekrar boyama yaparak RBT özelliğini koru RB-Insert-Fixup Bahar 2017 Doç. Dr. Suat Özdemir 17

RBT - Ekleme RB-Insert(T, z) 1. y nil[t] 2. x root[t] 3. while x nil[t] 4. do y x 5. if key[z] < key[x] 6. then x left[x] 7. else x right[x] 8. p[z] y 9. if y = nil[t] 10. then root[t] z 11. else if key[z] < key[y] 12. then left[y] z 13. Bahar 2017 else right[y] z RB-Insert(T, z) Contd. 14. left[z] nil[t] 15. right[z] nil[t] 16. color[z] RED 17. RB-Insert-Fixup (T, z) BST-Insert den farkı nedir? Hangi RBT özellikleri bozulabilir? RB-Insert-Fixup çağırarak ağacı düzelt. Doç. Dr. Suat Özdemir 18

Genel yapı Tüm kodlarda y düğümü p[z] nin kardeşi z nin amcası z sol veya sağ çocuk olabilir p[p[z]] C p[z] y A D z B Bahar 2017 Doç. Dr. Suat Özdemir 19

RBT - Ekleme Problem: Eklemenin olduğu yerde peş peşe gelen kırmızı düğümler oluşabilir Eklenen düğüm kırmızı bir kök olabilir p[z] siyahsa sorun yok Çözüm: Rotasyon yap Üç farklı durum oluşabilir, her durumda yapılacak olan işlem farlılık gösterir Case 1. y kırmızı. Sadece boyama yaparak yukarı çık Case 2. y siyah, z sağ çocuk. p[z] üzerinde sola rotasyon yap Case 3 oluşur Case 3. y siyah, z sol çocuk. p[z] yi siyah yap, p[p[z]] yi kırmızı yap, p[p[z]] üzerinde sağ rotasyon yap. Bahar 2017 Doç. Dr. Suat Özdemir 20

RB-Insert-Fixup(T,z) RB-Insert-Fixup (T, z) 1. while color[p[z]] = RED 2. do if p[z] = left[p[p[z]]] // p[z] sol çocuk 3. then y right[p[p[z]]] // y z nin amcası 4. if color[y] = RED 5. then color[p[z]] BLACK // Case 1 6. color[y] BLACK // Case 1 7. color[p[p[z]]] RED // Case 1 8. z p[p[z]] // Case 1 Bahar 2017 Doç. Dr. Suat Özdemir 21

RB-Insert-Fixup(T,z) RB-Insert-Fixup(T, z) (Contd.) 9. else if z = right[p[z]] // color[y] RED 10. then z p[z] // Case 2 11. LEFT-ROTATE(T, z) // Case 2 12. color[p[z]] BLACK // Case 3 13. color[p[p[z]]] RED // Case 3 14. RIGHT-ROTATE(T, p[p[z]]) // Case 3 15. else (if p[z] = right[p[p[z]]])(same as 10-14 16. with right and left exchanged) 17. color[root[t ]] BLACK Bahar 2017 Doç. Dr. Suat Özdemir 22

Durum 1 y kırmızı p[z] p[p[z]] C y C new z A z B D z burada sağ çocuk Sol çoçuk için aynı işlem geçerli A B D p[p[z]] (z nin dedesi) mutlaka siyah olmalı, z ve p[z] kırmızı. p[z] yi ve y yi siyah yap şimdi z ve p[z] kırmızı değil. Özellik 5 bozulmuş olabilir p[p[z]] yi kırmızı yap Özellik 5 düzeltildi. Sonraki aşamada p[p[z]] yeni z olur. Bahar 2017 Doç. Dr. Suat Özdemir 23

Durum 2- y siyah, z sağ çocuk p[z] C p[z] C A y B y z B z A p[z] üzerinde sol rotasyon, p[z] ve z rolleri değişir şimdi z sol çocuk, ve z ve p[z] nin her ikisi de kırmızı. Durum 3 oluşur. Bahar 2017 Doç. Dr. Suat Özdemir 24

Durum 3 y siyah, z sol çocuk C B p[z] B y A C z A p[z] yi siyah ve p[p[z]] yi kırmızı yap. p[p[z]] üzerinde sağ-rotasyon yap. Özellik 4 garanti edildi.. p[z] şimdi siyah daha fazla iterasyona gerek yok. Bahar 2017 Doç. Dr. Suat Özdemir 25

Analiz RB-Insert için O(lgn) zaman RB-Insert-Fixup çağrıldığında Her iterasyon O(1) O(lgn) seviyede en çok O(lgn) zaman alır Bu nedenle ekleme işlemi O(lgn) zaman alır Bahar 2017 Doç. Dr. Suat Özdemir 26

RBT - Silme Ekleme gibi tüm RBT özellikler korunmalı Silinen renge bağlı Kırmızı - OK. Neden? Siyah? İşlemler BST silme işlemi yap RBT özelliklerini tekrar kazandır Bahar 2017 Doç. Dr. Suat Özdemir 27

RBT - Silme RB-Delete(T, z) 1. if left[z] = nil[t] or right[z] = nil[t] 2. then y z 3. else y TREE-SUCCESSOR(z) 4. if left[y] = nil[t ] 5. then x left[y] 6. else x right[y] 7. p[x] p[y] // Do this, even if x is nil[t] Bahar 2017 Doç. Dr. Suat Özdemir 28

RBT - Silme RB-Delete (T, z) (Contd.) 8. if p[y] = nil[t ] 9. then root[t ] x 10. else if y = left[p[y]] 11. then left[p[y]] x 12. else right[p[y]] x 13. if y = z 14. then key[z] key[y] 15. copy y s satellite data into z 16. if color[y] = BLACK 17. then RB-Delete-Fixup(T, x) 18. return y Bahar 2017 Doç. Dr. Suat Özdemir 29

Hangi özellikler bozulabilir? y aslında silinen düğüm X düğümü y düğümün çocuğu Silme işleminden sonra x in parenti y nin silemden önceki parenti Eğer y siyahsa, aşağıdaki özellikler bozulabilir Özellik 1. OK Özellik 2. Eğer y kök ve x kırmızı ise, kök kırmızı olabilir Özellik 3. OK Özellik 4. p[y] ve x in her ikiside kırmızı olabilir. Özellik 5. y nin olduğu bir yol 1 siyah düğüm eksik olabilir Bahar 2017 Doç. Dr. Suat Özdemir 30

RBT - Silme y nin olduğu bir yol 1 siyah düğüm eksik x i extra siyah yaparak x in olduğu yollara 1 siyah düğüm sayısı ekle Özellik 5 şimdi tamam, ancak Özellik 1 bozuldu. x şimdi extra siyah Düğümler sadece siyah veya kırmızı olabilir Extra siyah farklı bir renk RB-Delete-Fixup çağrılarak çözülür Bahar 2017 Doç. Dr. Suat Özdemir 31

RB-Delete-Fixup RB-Delete-Fixup(T, x) 1. while x root[t ] and color[x] = BLACK 2. do if x = left[p[x]] 3. then w right[p[x]] 4. if color[w] = RED 5. then color[w] BLACK // Case 1 6. color[p[x]] RED // Case 1 7. LEFT-ROTATE(T, p[x]) // Case 1 8. w right[p[x]] // Case 1 Bahar 2017 Doç. Dr. Suat Özdemir 32

RB-Delete-Fixup(T, x) (Contd.) /* x is still left[p[x]] */ 9. if color[left[w]] = BLACK and color[right[w]] = BLACK 10. then color[w] RED // Case 2 11. x p[x] // Case 2 12. else if color[right[w]] = BLACK 13. then color[left[w]] BLACK // Case 3 14. color[w] RED // Case 3 15. RIGHT-ROTATE(T,w) // Case 3 16. w right[p[x]] // Case 3 17. color[w] color[p[x]] // Case 4 18. color[p[x]] BLACK // Case 4 19. color[right[w]] BLACK // Case 4 20. LEFT-ROTATE(T, p[x]) // Case 4 21. x root[t ] // Case 4 22. else (same as then clause with right and left exchanged) 23. color[x] BLACK Bahar 2017 Doç. Dr. Suat Özdemir 33

RBT- Silme Amaç: Extra siyah düğüm x kırmızı bir düğümü gösterene kadar yukarı çık ve x i normal siyah bir düğüm yap x eğer kökü gösterirse, sadece normal siyah yap Diğer durumlarda boyama ve rotasyon yaparak amaca ulaşmaya çalış. while döngüsünde: x her zaman kök olmayan extra siyah düğüm. w x in kardeşi. w nil[t ] olamaz. (p[x] de özellik 5 bozulurdu) 4 durum var Bahar 2017 Doç. Dr. Suat Özdemir 34

Case 1 w is red p[x] x A B D w B D E C E w must have black children. Make w black and p[x] red (because w is red p[x] couldn t have been red). Then left rotate on p[x]. New sibling of x was a child of w before rotation must be black. Go immediately to case 2, 3, or 4. Bahar 2017 Doç. Dr. Suat Özdemir 35 x A new w C

Case 2 w is black, both w s children are black x p[x] B c w new x B c A D A D C E C E Take 1 black off x ( singly black) and off w ( red). Move that black to p[x]. Do the next iteration with p[x] as the new x. If entered this case from case 1, then p[x] was red new x is red & black color attribute of new x is RED loop terminates. Then new x is made black in the last line. Bahar 2017 Doç. Dr. Suat Özdemir 36

Case 3 w is black, w s left child is red, w s right child is black x A B D w x A B c C new w C E D E Make w red and w s left child black. Then right rotate on w. New sibling w of x is black with a red right child case 4. Bahar 2017 Doç. Dr. Suat Özdemir 37

Case 4 w is black, w s right child is red x A B D w B D E C c E x A C Make w be p[x] s color. Make p[x] black and w s right child black. Then left rotate on p[x]. Remove the extra black on x ( x is now singly black) without violating any red-black properties. All done. Setting x to root causes the loop to terminate. Bahar 2017 Doç. Dr. Suat Özdemir 38

Analiz RB-Delete için O(lgn) zaman RB-Delete-Fixup çağrıldığında Sadece Case 2 de ağaç yüksekliği kadar iterasyon olur O(lgn) iterasyon Cases 1, 3, ve 4 sadece 1 rotasyon 3 Toplamda O(lgn) zaman alır. Bahar 2017 Doç. Dr. Suat Özdemir 39