İçeriğe geç
parazade

İkili Arama Ağacı Nedir?

İngilizce: Binary Search Tree

Yayın: · Son güncelleme:

İkili Arama Ağacı Nedir? Kısaca

İkili arama ağacı (binary search tree, BST), her düğümün solundaki değerlerin kendisinden küçük, sağındakilerin büyük olduğu ikili ağaçtır. Bu düzen sayesinde arama, ekleme ve silme işlemleri dengeli ağaçta çok hızlı yapılır.

İkili Arama Ağacı nedir?
İçindekiler
  1. İkili arama ağacı nedir?
  2. Arama nasıl yapılır?
  3. Dengesiz ağaç sorunu

İkili arama ağacı nedir?

İkili arama ağacı, sıralı veriyi hızlı aramak için tasarlanmış bir ağaç veri yapısıdır. Her düğümün en fazla iki çocuğu vardır. Kural şudur: bir düğümün sol tarafındaki tüm değerler ondan küçük, sağ tarafındakiler ondan büyüktür. Bu kural ağacın her seviyesinde geçerlidir.

Arama nasıl yapılır?

Kökte 50 olan bir ağaç düşünün. Sol tarafında 30, sağ tarafında 70 bulunsun. 30'un çocukları 20 ve 40, 70'in çocukları 60 ve 80 olsun. 60 değerini aradığınızda önce kökteki 50'ye bakarsınız. 60 daha büyük olduğu için sağa, 70'e geçersiniz. Bu kez 60 daha küçüktür, sola inersiniz ve değeri bulursunuz.

Her adımda kalan ağacın yaklaşık yarısı elenir. Dengeli bir ağaçta bir milyon elemanın içinde arama yaklaşık 20 adımda biter. Yeni bir değer eklemek de aynı yolu izler: değer, aramanın bittiği boş yere yerleştirilir.

Dengesiz ağaç sorunu

Değerler ağaca zaten sıralı gelirse sorun çıkar. 10, 20, 30, 40 sırasıyla eklenen değerler hep sağa yerleşir ve ağaç uzun bir zincire döner. Bu durumda arama, ikili arama hızını kaybeder ve listeyi baştan sona gezmekle aynı hâle gelir.

Çözüm, kendini dengeleyen ağaçlardır. AVL ve kırmızı-siyah ağaçlar her ekleme ve silmeden sonra düğümleri döndürerek yüksekliği düşük tutar. Java'daki TreeMap ve C++'taki std::map gibi hazır yapılar arka planda bu tür ağaçları kullanır. Kendi projenizde çoğu zaman bu hazır yapıları tercih etmeniz yeterlidir.

Sıkça Sorulan Sorular

İkili arama ağacı ile ikili arama aynı şey mi?

Fikir aynıdır ama kullanıldıkları yapı farklıdır. İkili arama sıralı bir dizide uygulanır; ikili arama ağacı ise aynı mantığı düğümlerden oluşan bir ağaçta sağlar ve ekleme ile silmeyi kolaylaştırır.

Dengeli ikili arama ağacı nedir?

Sol ve sağ dalları arasındaki yükseklik farkı küçük tutulan ağaçtır. AVL ve kırmızı-siyah ağaçlar, ekleme ve silmeden sonra kendilerini otomatik dengeler.

İlgili terimler

Ağaç Veri Yapısı(Tree Data Structure)Ağaç veri yapısı, verileri bir kökten başlayıp dallara ayrılan hiyerarşik bir düzende tutan yapıdır. Her düğüm alt düğümlere bağlanabilir; dosya sistemleri ve web sayfalarının yapısı bu modele dayanır.İkili Arama(Binary Search)İkili arama (binary search), sıralı bir listede aranan değeri her adımda listenin ortasındaki elemanla karşılaştırıp arama alanını yarıya indiren arama algoritmasıdır. Bir milyon elemanlı listede bile yaklaşık 20 adımda sonuca ulaşır.Veri Yapıları(Data Structures)Veri yapıları, verilerin bilgisayar belleğinde düzenli ve verimli biçimde saklanması ve işlenmesi için kullanılan yöntemlerdir. Dizi, bağlı liste, stack, kuyruk, ağaç, graf ve hash tablosu en bilinen örneklerdir.Big O Notasyonu(Big O Notation)Big O notasyonu, bir algoritmanın çalışma süresinin ya da bellek kullanımının girdi büyüdükçe nasıl arttığını ifade eden matematiksel gösterimdir. Algoritmaları donanımdan bağımsız biçimde karşılaştırmayı sağlar.JavaJava, Sun Microsystems tarafından 1995'te yayımlanan, bugün Oracle tarafından geliştirilen, nesne yönelimli ve platformdan bağımsız bir programlama dilidir; kod Java Sanal Makinesi (JVM) üzerinde çalışır.mAP(Mean Average Precision)mAP (mean Average Precision, ortalama kesinlik ortalaması), her sınıf ya da sorgu için hesaplanan ortalama kesinlik (AP) değerlerinin ortalamasıdır. Özellikle nesne tespiti ve arama sistemlerinde modelin hem doğru bulma hem doğru sıralama başarısını tek sayıyla özetler.