Bölüm 10: Arama Ağaçları

BST düzeni, silme ve denge
BST kuralıAramaEklemeSilmeYükseklikDenge
C ile Veri Yapıları · İki ciltlik ders notları temel alınmıştır

Hazırlık

Başlamadan Önce

C ön bilgisi

Dizi, gösterge, struct, fonksiyon ve dinamik bellek temellerini hatırla.

İlk kavram

BST kuralı ve Arama

Bu bölümün hedefi

Sol alt ağaçtaki anahtarların küçük, sağdakilerin büyük olduğunu göstermek.

Başlangıç sorusu

BST'de inorder ne üretir?

Giriş

Öğrenme Çıktıları

BST kuralını uygulamak

Sol alt ağaçtaki anahtarların küçük, sağdakilerin büyük olduğunu göstermek.

Aramak ve eklemek

Karşılaştırmalarla tek bir kök-yaprak yolu izlemek.

Silme durumlarını ayırmak

Yaprak, tek çocuk ve iki çocuk durumlarını güvenle çözmek.

Dengeyi yorumlamak

Yüksekliğin işlem maliyetine doğrudan etkisini açıklamak.

Temel Kavramlar

İkili arama ağacı sıralı bir karar yapısıdır

Her karşılaştırma arama uzayını sol veya sağ alt ağaca indirir; performans ağacın yüksekliğine bağlıdır.

Sol alt ağaç

Tüm anahtarlar kök anahtarından küçüktür.

Sağ alt ağaç

Tüm anahtarlar kök anahtarından büyüktür.

Inorder

Anahtarları küçükten büyüğe üretir.

Yükseklik

Dengeli ağaçta log n, çarpık ağaçta n olabilir.

Temel Kavramlar

Kavram Haritası

1BST kuralı
2Arama
3Ekleme
4Silme
5Yükseklik
6Denge
Her karşılaştırma arama uzayını sol veya sağ alt ağaca indirir; performans ağacın yüksekliğine bağlıdır.

Gösterim

Arama tek bir yol izler

50
↙      ↘
3070
↙ ↘    ↙ ↘
20406080
60 aranırken: 60 > 50 → sağ; 60 < 70 → sol; bulundu.

C ile Gerçekleştirim

BST düğümü

typedef struct BST {
    int anahtar;
    struct BST *sol, *sag;
} BST;
Tür tanımı veri yapısının bellekteki biçimini; yordamlar ise bu yapı üzerindeki davranışı kurar.

C ile Gerçekleştirim

C'de Bellek ve Sahiplik

Sahip kim?

Ayrılan belleği hangi yapı veya yordamın bırakacağını baştan belirle.

Yaşam süresi

Yerel değişken adresini fonksiyon dışına taşırma; dinamik belleği gerektiği kadar yaşat.

Sınırlar

Boyut, kapasite ve geçerli indisleri her işlemde koru.

Boş durum

NULL, boş yapı ve tek öğe durumlarını özellikle eşit anahtar politikasını tanımlamamak riskiyle birlikte test et.

Temel İşlemler

Özyineli ekleme

BST *ekle(BST *kok, int x) {
    if (kok == NULL) return yeni_dugum(x);
    if (x < kok->anahtar)
        kok->sol = ekle(kok->sol, x);
    else if (x > kok->anahtar)
        kok->sag = ekle(kok->sag, x);
    return kok;
}
Kod örnekleri C99/C11 uyumlu olacak biçimde küçük ve tek sorumluluklu tutulmuştur.

Temel İşlemler

Kodu Okurken

Ön koşul

BST'de inorder ne üretir?

Değişmez

Her adımda sol alt ağaç kuralı korunuyor mu?

Son koşul

Karşılaştırmalarla tek bir kök-yaprak yolu izlemek.

Hata yolu

Silme sonrası alt ağaç kökünü geri bağlamamak

Adım Adım

İki çocuklu 50'yi sil

Düğümü bul

50 köktedir ve iki çocuğu vardır.

Ardılı seç

Sağ alt ağacın en küçüğü 60'tır.

Değeri taşı

50 yerine 60 yazılır.

Tekrarlı düğümü sil

Sağ alt ağaçtaki eski 60, yaprak/tek çocuk kuralıyla kaldırılır.

Sınıf Notu

Dersten Sesler

“Siz bir değer söyleyin, ben ekleyeyim. Sağa eklerim, sola eklerim; nereye ekleneceği ağacın bileceği iş!”
“Algoritmayı yazdıktan sonra peşini bırakmıyoruz. En çok bozacak veriyi de sorguluyoruz.”

Notlardaki sınıf içi anlatımdan, yazım ve uzunluk bakımından sunuma uyarlanmıştır.

Analiz

Karmaşıklık Özeti

İşlemZamanEk bellek
AramaO(h)O(1)
EklemeO(h)O(h) özyineli
SilmeO(h)O(h) özyineli
Inorder dolaşımO(n)O(h)
Dengeli durumda hO(log n)—

n: öğe sayısı · h: yükseklik · V: düğüm sayısı · E: kenar sayısı

Tasarım Kararı

Hangi Durumda Hangisi?

Basit BST

Veri sırası rastgele ve uygulama basitliği önemliyse.

AVL

Arama gecikmesi sıkı biçimde logaritmik tutulacaksa.

Red-black

Güncelleme ve arama dengesi isteniyorsa.

Hash tablosu

Sıra gerekmiyor, ortalama sabit zaman erişim öncelikliyse.

Dikkat

Sık Yapılan Hatalar

1Eşit anahtar politikasını tanımlamamak
2Silme sonrası alt ağaç kökünü geri bağlamamak
3Çarpık ağacı dengeli sanıp O(log n) demek
4İki çocuklu silmede ardılın eski düğümünü bırakmak

Alıştırmalar

Kendini Sına

  1. BST'de inorder ne üretir?
  2. İşlem maliyeti neden h ile ifade edilir?
  3. İki çocuklu düğüm nasıl silinir?
  4. Sıralı veri basit BST'yi nasıl etkiler?
  5. AVL gibi yapılar neyi garanti eder?
Cevapları göster
  1. Anahtarları sıralı sırada.
  2. Arama ve güncelleme tek bir kök-yaprak yolu izler.
  3. Ardıl veya öncül değeri taşınıp o düğüm silinir.
  4. Ağacı zincir gibi çarpıtabilir; h=n olur.
  5. Yüksekliği O(log n) düzeyinde tutar.

Uygulama

Mini Laboratuvar

1 · Çiz

BST'de inorder ne üretir?

2 · Kodla

İki çocuklu düğüm nasıl silinir?

3 · Ölç

AVL gibi yapılar neyi garanti eder?

Teslim: küçük bir C modülü, üç uç test ve zaman/bellek karmaşıklığı tablosu.

Özet

Bölüm Özeti

Sıra kuralı

Her karşılaştırma yön seçtirir.

Maliyet = yükseklik

Denge performansın merkezindedir.

Silme üç durum

Yaprak, tek çocuk, iki çocuk ayrı ele alınır.

Özet

Kaynaklar ve Devam

Son

Bölüm 10: Arama Ağaçları
Ders planına dön
1 / 1 C ile Veri Yapıları

← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt