logo

İkili Arama ağacı ve AVL ağacı

İkili arama ağacı ve AVL ağacı farklılıklarını bilmeden önce ikili arama ağacını ve AVL ağacını ayrı ayrı bilmeliyiz.

İkili Arama Ağacı Nedir?

ikili arama ağacı bir ağaç ikili ağaç . Bildiğimiz gibi o ağacın 'n' sayıda çocuğu olabilir, oysa; ikili ağaç en fazla iki çocuğu içerebilir. Dolayısıyla ikili ağacın kısıtlamasını ikili arama ağacı da takip eder. İkili arama ağacındaki her düğümün en fazla iki çocuğu olmalıdır; diğer bir deyişle ikili arama ağacının ikili ağacın bir çeşidi olduğunu söyleyebiliriz.

İkili arama ağacı aynı zamanda ikili aramanın özelliklerini de takip eder. İkili aramada bir dizideki tüm öğelerin sıralı olması gerekir. Orta elemanın sol kısmının orta değerden küçük değeri, orta elemanın sağ kısmının ise orta değerden büyük değerleri içerdiği ikili aramada orta elemanı hesaplarız.

İkili Arama Ağacı'nda ortadaki eleman kök düğüm, sağ kısım sağ alt ağaç ve sol kısım sol alt ağaç olur. Bu nedenle ikili arama ağacının bir kombinasyonu olduğunu söyleyebiliriz. ikili ağaç Ve Ikili arama .

Not: İkili Arama Ağacı, sol alt ağacın tüm elemanlarının kök düğümden küçük olduğu ve sağ alt ağacın tüm elemanlarının kök düğümden büyük olduğu ikili ağaç olarak tanımlanabilir.

İkili Arama Ağacında Zaman Karmaşıklığı

Eğer ikili arama ağacı neredeyse dengeli bir ağaç ise, o zaman tüm işlemler şu kadar zaman karmaşıklığına sahip olacaktır: O(giriş) çünkü arama sol veya sağ alt ağaca bölünmüştür.

python sıralama tuple'ı

Eğer ikili arama ağacı sola ya da sağa çarpıksa tüm işlemler şu kadar zaman karmaşıklığına sahip olacaktır: Açık) çünkü n elemana kadar ilerlememiz gerekiyor.

AVL Ağacı nedir?

Bir AVL ağacı sol ve sağ alt ağaçların yükseklikleri arasındaki farkın birden fazla olamayacağı, kendi kendini dengeleyen bir ikili arama ağacıdır. Bu fark denge faktörü olarak bilinir. AVL ağacında denge faktörünün değerleri -1, 0 veya 1 olabilir.

İkili arama ağacının kendi kendini dengelemesi nasıl gerçekleşir?

AVL ağacının kendi kendini dengeleyen bir ikili arama ağacı olduğunu biliyoruz. İkili arama ağacı dengeli değilse bazı yeniden düzenlemelerle kendi kendine dengelenebilir. Bu yeniden düzenlemeler bazı rotasyonlar kullanılarak yapılabilir.

vijay sinema oyuncusu

Kendi kendini dengelemeyi bir örnekle anlayalım.

Diyelim ki eklemek istiyoruz 10, 20, 30 bir AVL ağacında.

Bir AVL ağacına 10, 20, 30 eklemenin yolları şunlardır:

    Ekleme sırası 30, 20, 10 ise.

Aşama 1: Öncelikle aşağıda gösterildiği gibi bir İkili arama ağacı oluşturuyoruz:

İkili Arama ağacı ve AVL ağacı

Adım 2: Yukarıdaki şekilde 30 nolu düğümün denge faktörü 2 olduğu için ağacın dengesiz olduğunu görebiliyoruz. Bunu bir AVL ağacı yapmak için bazı döndürmeler yapmamız gerekiyor. Eğer 20. düğümde doğru rotasyon yaparsak, aşağıda gösterildiği gibi 30. düğüm aşağı doğru hareket edecek, 20. düğüm ise yukarı doğru hareket edecektir:

İkili Arama ağacı ve AVL ağacı

Gözlemleyebileceğimiz gibi, son ağaç İkili Arama ağacının ve dengeli ağacın özelliğini takip eder; bu nedenle bir AVL ağacıdır.

Bu durumda, ağaç dengesiz ağaç bırakılmış, böylece düğümde doğru rotasyonu gerçekleştiririz.

    Ekleme sırası 10, 20, 30 ise.

Aşama 1: Öncelikle aşağıda gösterildiği gibi bir İkili arama ağacı oluşturuyoruz:

İkili Arama ağacı ve AVL ağacı

Adım 2: Yukarıdaki şekilde 10. düğümün denge faktörünün -2 olması nedeniyle ağacın dengesiz olduğunu görebiliyoruz. Bunu bir AVL ağacı haline getirmek için bazı döndürmeler yapmamız gerekiyor. Sağa dengesiz bir ağaç olduğundan sola dönüş yapacağız. 20. düğümde sola dönüş yaparsak, aşağıda gösterildiği gibi 20. düğüm yukarıya, 10. düğüm ise aşağıya doğru hareket edecektir:

İkili Arama ağacı ve AVL ağacı

Görebildiğimiz gibi, son ağaç, İkili Arama ağacı ve bir dengeli ağaç ; bu nedenle bir AVL ağacıdır.

    Ekleme sırası 30, 10, 20 ise

Aşama 1: Öncelikle aşağıda gösterildiği gibi İkili Arama ağacını oluşturuyoruz:

İkili Arama ağacı ve AVL ağacı

Adım 2: Yukarıdaki şekilde kök düğümün denge faktörü 2 olduğundan ağacın dengesiz olduğunu görebiliyoruz. AVL ağacı yapmak için bazı döndürmeler yapmamız gerekiyor. Yukarıdaki senaryo sol-sağ dengesizdir çünkü bir düğüm ana düğümünün solunda, diğeri ise ana düğümünün sağındadır. İlk önce sola dönüş yapacağız ve dönüş 10 ve 20 numaralı düğümler arasında gerçekleşecek. Sola dönüşten sonra aşağıda gösterildiği gibi 20 yukarıya, 10 ise aşağıya doğru hareket edecek:

İkili Arama ağacı ve AVL ağacı

Yine de ağaç dengesiz olduğundan ağaçta doğru döndürme işlemini gerçekleştiriyoruz. Ağaçta doğru dönüş gerçekleştirildikten sonra ağaç aşağıda gösterildiği gibi olur:

İkili Arama ağacı ve AVL ağacı

Yukarıdaki ağaçta da görebileceğimiz gibi ağaç, İkili Arama ağacının ve dengeli bir ağacın özelliğini takip eder; bu nedenle bir AVL ağacıdır.

    Ekleme sırası 10, 30, 20 ise

Aşama 1: Öncelikle aşağıda gösterildiği gibi İkili Arama ağacını oluşturuyoruz:

denetimli makine öğrenimi
İkili Arama ağacı ve AVL ağacı

Adım 2: Yukarıdaki şekilde kök düğümün denge faktörü 2 olduğundan ağacın dengesiz olduğunu görebiliyoruz. AVL ağacı yapmak için bazı döndürmeler yapmamız gerekiyor. Yukarıdaki senaryo, bir düğüm ana düğümünün sağında ve başka bir düğüm ana düğümünün solunda olduğundan sağ-sol dengesizdir. Öncelikle 30 ve 20 nolu düğümler arasında gerçekleşen sağa dönüş işlemini gerçekleştireceğiz. Sağa dönüş sonrasında aşağıda gösterildiği gibi 20 yukarıya, 30 ise aşağıya doğru hareket edecektir:

İkili Arama ağacı ve AVL ağacı

Yine de yukarıdaki ağaç dengesiz olduğundan düğümde sola dönüş yapmamız gerekiyor. Sola dönüş gerçekleştirildikten sonra, 20 nolu düğüm yukarıya doğru hareket edecek ve 10 nolu düğüm aşağıda gösterildiği gibi aşağıya doğru hareket edecektir:

İkili Arama ağacı ve AVL ağacı

Yukarıdaki ağaçta da görebileceğimiz gibi ağaç, İkili Arama ağacının ve dengeli bir ağacın özelliğini takip eder; bu nedenle bir AVL ağacıdır.

İkili Arama ağacı ile AVL ağacı arasındaki farklar

İkili Arama ağacı ve AVL ağacı
İkili Arama ağacı AVL ağacı
Her ikili arama ağacı bir ikili ağaçtır çünkü her iki ağaç da en fazla iki çocuğu içerir. Her AVL ağacı aynı zamanda bir ikili ağaçtır çünkü AVL ağacının aynı zamanda en fazla iki çocuğu vardır.
BST'de denge faktörü gibi bir terim bulunmamaktadır. AVL ağacında her düğüm bir denge faktörü içerir ve denge faktörünün değeri -1, 0 veya 1 olmalıdır.
Her İkili Arama ağacı bir AVL ağacı değildir çünkü BST dengeli veya dengesiz bir ağaç olabilir. Her AVL ağacı bir ikili arama ağacıdır çünkü AVL ağacı BST'nin özelliğini takip eder.
İkili Arama ağacındaki her düğüm üç alandan oluşur; yani sol alt ağaç, düğüm değeri ve sağ alt ağaç. AVL ağacındaki her düğüm dört alandan oluşur; yani sol alt ağaç, düğüm değeri, sağ alt ağaç ve denge faktörü.
İkili Arama ağacı durumunda, ağaca herhangi bir düğüm eklemek istersek düğüm değerini kök değeriyle karşılaştırırız; düğümün değeri kök düğüm değerinden büyükse düğüm sağ alt ağaca eklenir, aksi takdirde düğüm sol alt ağaca eklenir. Düğüm yerleştirildikten sonra eklemenin tamamlanması için yükseklik dengesi faktörünün kontrol edilmesine gerek yoktur. AVL ağacı durumunda öncelikle düğümü eklemek için uygun yeri bulacağız. Düğüm eklendikten sonra her düğümün denge faktörünü hesaplayacağız. Her düğümün denge faktörü karşılanırsa ekleme tamamlanır. Denge faktörü 1'den büyükse ağacı dengelemek için bazı döndürmeler yapmamız gerekir.
İkili Arama ağacında, ağacın yüksekliği veya derinliği O(n)'dir; burada n, İkili Arama ağacındaki düğümlerin sayısıdır. AVL ağacında ağacın yüksekliği veya derinliği O(logn)'dur.
Düğümü eklemek için İkili Arama özelliklerini takip etmemiz gerektiğinden uygulaması kolaydır. Uygulanması karmaşıktır çünkü AVL ağacında önce AVL ağacını oluşturmamız ve ardından yükseklik dengesini kontrol etmemiz gerekir. Yükseklik dengesizse, ağacı dengelemek için bazı rotasyonlar yapmamız gerekir.
BST dengeli bir ağaç değildir çünkü denge faktörü kavramını takip etmez. AVL ağacı, denge faktörü kavramını takip ettiği için yüksekliği dengeli bir ağaçtır.
Ağaçta çok sayıda düğüm mevcut olduğunda yükseklik dengeli olmadığından arama BST'de verimsizdir. Yükseklik dengeli olduğu için ağaçta çok sayıda düğüm olsa bile AVL ağacında arama etkilidir.