İkili Arama Ağacı, verileri düzenlememize ve sıralamamıza destek olan çeşitli veri yapılarından biridir. Verileri bir hiyerarşide depolamanın etkili bir yoludur ve oldukca esnektir.
Bu makalede, özellikleri ve uygulamalarıyla beraber iyi mi çalıştığına daha yakından bakacağız.
Fotoğraf Kredisi: Pat Hawks/Wikimedia Commons
İkili Arama Ağacı, Bağlı Listelere benzer şekilde düğümlerden oluşan bir veri yapısıdır. İki tür düğüm olabilir: alt ve üst düğüm. Kök düğüm, sol düğüm ve sağ düğüm olarak adlandırılan iki alt düğüme dallanma yapısının başlangıç noktasıdır.
Her düğüme yalnızca üst öğesi tarafınca başvurulabilir ve yöne bağlı olarak ağacın düğümlerinden geçebiliriz. İkili Arama Ağacı’nın üç ana özelliği vardır:
Tüm düzeyler dolduğunda ve her düğümün bir sol ve sağ alt düğümü olduğunda Muhteşem İkili Arama Ağacı elde edilir.
Artık İkili Arama Ağacı’nın ne olduğu hakkında daha iyi bir fikriniz var, aşağıdaki temel işlemlerine bakabiliriz.
Arama, ağaçta bulunan belirli bir kıymeti bulmamızı sağlar. İki tür arama kullanabiliriz: genişlik-ilk arama (BFS) ve derinlik-ilk arama (DFS). Genişlik-ilk arama, kök düğümden süregelen ve hedef bulunana kadar yatay olarak, yana doğru geçiş meydana getiren bir arama algoritmasıdır. Her düğüm bu arama esnasında bir kez ziyaret edilir.
Öte taraftan, derinlik ilkin arama, kök düğümden başlayarak ve tek bir dalda emek vererek ağacı dikey olarak geçer. Amaç bulunursa, işlem sonlanmış olur. Sadece değilse, öteki düğümleri arar.
Ekleme işlemi, yeni düğümün eklenmesi ihtiyaç duyulan konumu belirlemek için arama işlemini kullanır. İşlem kök düğümden adım atar ve hedefe ulaşılana kadar arama adım atar. Ekleme ile dikkate alınması ihtiyaç duyulan üç durum vardır.
Silme işlemi, ağaç içindeki belirli bir düğümü kaldırmak için kullanılır. Silme, bir düğümü kaldırdıktan sonrasında ağacın buna gore tekrardan düzenlenmesi gerektiği için zor olarak kabul edilir. Dikkate alınması ihtiyaç duyulan üç ana durum vardır:
Geçiş, İkili Arama Ağacı’nda gezindiğimiz işlemdir. Belirli bir öğeyi bulmak yada ağacın anahattını yazdırmak için yapılır. Daima kök düğümden başlarız ve öteki düğümlere ulaşmak için kenarları takip etmeliyiz. Her düğüm bir alt ağaç olarak kabul edilmelidir ve tüm düğümler ziyaret edilene kadar işlem yinelenir.
Peki, ikili arama ağacı algoritmalarını iyi mi kullanırız? Tahmin edilebilir, arama ve sıralamada son aşama verimlidirler. İkili ağaçların en büyük gücü organize yapılarıdır. Çözümleme etmemiz ihtiyaç duyulan veri miktarını geçiş başına yarı yarıya azaltarak aramanın dikkat çekici hızlarda yapılmasını sağlar.
İkili Arama Ağaçları, dinamik olarak değişen bir veri kümesini tertipli bir halde verimli bir halde korumamızı sağlar. Sık sık veri eklenen ve kaldırılan uygulamalar için oldukca yararlıdır. Video oyun motorları, nesneleri tertipli olarak işlemeye destek olmak için ikili alan kısmı olarak malum ağaçları temel alan bir algoritma kullanır. Microsoft Excel ve bir çok elektronik tablo yazılımı, temel veri yapısı olarak ikili ağaçları kullanır.
Mors alfabesi verileri kodlamak için ikili arama ağacı kullandığını bilmek sizi şaşırtabilir. İkili Arama Ağaçlarının bu kadar yararlı olmasının bir başka mühim sebebi de çoklu varyasyonlarıdır. Esneklikleri, her türlü problemi çözmek için oldukca sayıda varyant oluşturulmasına yol açmıştır. Muntazam kullanıldığında, İkili Arama Ağaçları mükemmel bir varlıktır.
Bir mühendisin uzmanlığını ölçmenin ana yollarından biri, veri yapılarını tanımaları ve uygulamalarıdır. Veri yapıları yararlıdır ve daha verimli bir sistem oluşturmanıza destek olabilir. İkili Arama Ağaçları, herhangi bir geliştirici için veri yapılarına mükemmel bir giriştir.