AVL(Adel’son-Vel’skiĭ and Landis) Ağacı AVL ağacı, iki alt ağacının yükseklikleri farkının en fazla 1 olabildiği dengeli ikili arama ağacıdır. AVL ağacında düğümün, iki alt ağacının yükseklikleri farkına “Balance Factor” (“Denge Faktörü”) denilmektedir.
Örnek: Elemanlar sıralı olarak eklenildiğinde oluşan dengesiz ikili arama ağacı ve AVL ağacı Dengesiz ikili arama ağacı AVL ağacı
Dengesiz, bağlı liste biçiminde ikili arama ağacında arama işlemi O(n) Dengeli ikili arama ağacında (AVL) arama işlemi O(log 2 n) Dengesiz ağaçta ve AVL ağacında arama işlemi
eleman bulunan bir ağaç düşünüldüğünde: -dengesiz (bağlı listeye benzeyen) bir ağaçta son elemanı bulmak adım sürer -AVL ağacında köke en uzak elemanı bulmak log 2 (100000) = 17 adım sürer
H L : Sol alt ağacın yüksekliği H R : Sağ alt ağacın yüksekliği denge faktörü = H L - H R AVL Denge Faktörü H L = 1 H R = 2 yukarıdaki ağacın denge faktörü = = -1
AVL Denge Faktörü AVL ağacında denge faktörü -1, 0 ve +1 olabilir: -sol taraf daha yüksekse denge faktörü = +1 -sağ taraf daha yüksekse denge faktörü = -1 -iki taraf eşit yükseklikteyse denge faktörü = 0 Eğer ekleme veya silme durumunda herhangi bir düğümün denge faktörü -2 veya +2 olursa dengeleme işlemi yapılır
Ağacın Dengelenmesi -Ekleme veya silme işlemi yapıldığında ağaç dengesiz hale gelirse tekrar dengeli hale getirilmelidir. -AVL ağacı bazı düğümlerin sağa veya sola döndürülmesiyle tekrar dengeli hale getirilebilir.
Dengesiz ağacı dengeleme işleminde dört durum vardır: -solun solu -sağın sağı -solun sağı -sağın solu Ağacın Dengelenmesi
Solun Solu Örnekteki ağaca “1” eklendiğinde oluşan durum
Sağın Sağı Örnekteki ağaca “19” eklendiğinde oluşan durum
Solun Sağı Örnekteki ağaca “7” eklendiğinde oluşan durum
Sağın Solu Örnekteki ağaca “10” eklendiğinde oluşan durum
Solun solu durumunda dengeleme sağa döndürme işlemi
Solun solu durumunda dengeleme sağa döndürme işlemi
Sağın sağı durumunda dengeleme sola döndürme işlemi
Sağın sağı durumunda dengeleme sola döndürme işlemi
Solun sağı durumunda dengeleme adım “3” alt ağacını sola döndür 2. adım (solun solu problemi) “5” alt ağacını sağa döndür
Solun sağı durumunda dengeleme adım “3” alt ağacını sola döndür 2. adım (solun solu problemi) “8” alt ağacını sağa döndür 1 2
Sağın solu durumunda dengeleme adım “5” alt ağacını sağa döndür 2. adım “3” alt ağacını sola döndür 12
Sağın solu durumunda dengeleme adım “15” alt ağacını sağa döndür 2. adım “8” alt ağacını sola döndür 1 2
AVL’nin koddaki tanımı AVL ağacı yapısının kod içinde tanımı ikili arama ağacı gibi olup, ek olarak denge faktörünü içerir. Dugum { int veri; Dugum * sag; Dugum * sol; int dengeFaktoru; }
AVL ağacında dolaşma ve arama -AVL ağacında dolaşma ve arama işlemleri, ikili arama ağacıyla aynıdır.
AVL ağacında ekleme -İkili arama ağacında olduğu gibi her ekleme işlemi yaprak düğüme yapılır. -Eklenecek yeri bulma, kökten başlanılarak ikili arama şeklinde yaprak düğüme kadar ilerlenerek yapılır. -Yaprak düğüme yeni düğüm eklenildikten sonra, ikili arama ağacından farklı olarak ağaçta geriye (köke) doğru ilerlenir.
AVL ağacında ekleme (devam) -Köke doğru ilerlenirken denge faktörleri güncellenir. -Herhangi bir düğümde dengenin bozulması (+2 veya -2 denge faktörü) durumunda dengeleme işlemi yapılır. -Dengeleme işleminden sonra köke doğru ilerlemeye devam edilir.