260 likes | 564 Views
Silme. Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazı iç düğümlerde bir anahtar olabilir. ( bahsedilen mantığa göre yeni elemanla yer değiştirmesi gerekir. )
E N D
Silme • Anahtar hedefi silmek için, x yaprağında buluruz ve sonra sileriz. • Dikkat edilmesi gereken iki durum vardır. (1) Hedef bazı iç düğümlerde bir anahtar olabilir. (bahsedilen mantığa göre yeni elemanla yer değiştirmesi gerekir.) (2) x yaprağından hedefi sildikten sonra, M/2 - 1 anahtardan daha az eleman içerirse(düğümleri birleştirmek gerekir. )
Durum (1) • Verilen mantığa göre, hedef x in enfazla bir y atasında anahtar olarak görülebilir. Üstelik, düğüm y’yi ziyaret etmiş olmamız gerekir ve hedefi onun içerisınde görmüş olmamız gerekir. Bu yüzden x düğümünden sildikten sonra, y’ ye doğrudan erişebiliriz ve x’deki yeni en küçük elemanla yer değiştirebiliriz.
Durum (2): Çok az anahtarı olan yaprakların düzenlenmesi • Farzedelimki bir yapraktan hedef anahtarlı bir kayıdı sildik • u M/2 - 2 kadar (çok az) anahtarı olan bir yaprak olsun. • v, u nun bir kardeşi olsun • k u ve v yi ayıran ve u ve v nin ebeveyninde olan bir anahtar (işaretçi) olsun. • Bu halde iki durum vardır.
Çok az anahtarı olan yaprakların düzenlenmesi • Durum 1: v M/2 kadar veya daha fazla anahtar içerir ve v, u ‘nun sağdaki kardeşidir. • Ensoldaki kaydı v’den u’ya taşı • Ebeveyn’de u ve v yi ayırabilmek için gerekli anahtarı v’nin en küçük yeni elemanı olarak belirle • Durum 2: v M/2 veya daha fazla anahtar içeriyor ve v, u’nun soldaki kardeşidir. • Ensağdaki kaydı v’den u’ya taşı • Ebeveyn’de u ve v yi ayırabilmek için gerekli anahtarı u’nun en küçük yeni elemanı olarak belirle
Silme Örneği 15 silinmek isteniyor
İki yaprağın birleştirilmesi • En az M/2 kadar anahtarı olmayan iki kardeş birleştirilir. • Durum (1): Farzedelimki u’nun sağdaki kardeşi v tam olarak M/2 -1 anahtar içermektedir. u ve v birleştirilir • u’daki anahtarları v’ye taşı • Ebeveyndeki u’ya olan işaretçiği kaldır. • u’nun ebeveynınden u ve v yi ayıran anahtarı sil
İki yaprağın birleştirilmesi • Durum (2): Farzedelimki u’nun solundaki kardeşi v tam olarak M/2 -1 anahtar içermektedir. u ve v birleştirilir • u’daki anahtarları v’ye taşı • Ebeveyndeki u’ya olan işaretçiği kaldır. • u’nun ebeveynınden u ve v yi ayıran anahtarı sil
Örnek 12 silinmek isteniyor
Devamı v u
Devamı çok az anahtar! …
İç bir düğümden bir anahtarın silinmesi • Farzedelim ki iç düğüm u’dan bir anahtar silindi ve u’ daki anahtar sayısıM/2 -1 ‘den az oldu. • Durum (1): u kökse • Eğer u boş ise, u’yu kaldır ve onun çocuğunu yeni kök yap
İç bir düğümden bir anahtarın silinmesi • Durum (2): u’nun sağ kardeşi vM/2 kadar veya daha fazla anahtara sahipse • u ve v’nin ebeveyninden u ve v arasındaki ayırıcı anahtarı u’ya taşı. • v’nin en soldaki çocuğunu u’nun en sağdaki çocuğu yap • ebeveyne u ve v yi ayırmak için v’nin en solundaki anahtarı taşı. • Durum (2): u’nun sol kardeşi v M/2 kadar veya daha fazla anahtara sahipse • u ve v’nin ebeveyninden u ve v arasındaki ayırıcı anahtarı u’ya taşı. • v’nin en sağındaki çocuğunu u’nun en solundaki çocuk yap • ebeveyne u ve v yi ayırmak için v’nin en sağındaki anahtarı taşı
…önceki örnekten devam edersek case 2 v u
Durum (3): u ve v kardeşleri tam olarak M/2 - 1 anahtar içeriyorsa • u ve v’nin ebeveyninden u ve v arasındaki ayırıcı anahtarı u’ya taşı. • u’daki anahtar ve çocuk işaretçilerini v’ ye taşı • Evebeynden u’ ya olan işaretçiyi kaldır.
Örnek 5 silinmek isteniyor
Devamı u v
Devamı Durum 3 v u