Eğitim Java Veri Yapıları

Binary Trees

Binary Tree ler ile ilgili kodları github hesabımızdan bakabilirsiniz

 

Veri yapılarının en bilinmesi gereken konularından biri belkide ağaçlardır. Bugun İkili ağaçlardan bahsetmeye çalışacağım ama ağaçlar birkaç konuyla özelleşiyor.Bunlardan en çok bilinenleri şu şekilde

  • İkili Ağaçlar
  • İkili Arama  Ağaçları
  • AVL Ağacı
  • B Ağacı

ilk önce genel olarak ağaçlardan bahsetmek istiyorum.

Adındanda anlaşılacağı üzerine ağaçlar belli bir  hiyerarşik yapıdadır.Ağaçlar bir Abstract Data Type tipidir yani Soyut Veri Tipi. Soyut veri tipinden kastım diziler gibi değil yani herkes kendi ağaç sınıfını yazabilir ve özelleştirebilir.

Peki Neden Ağaçlara İhtiyacımız Var ?

Edindiğimiz verileri bir düzen veya bir veri dizesine sokmak isteriz. Bu konuda veri yapıları bizim işlerimizi görüyor. Ağaçlarda diğer veri yapılarından avantajlı olduğu durumlar var. Örneğin linkedlist(bağlantılı listeler) ve dizilerden çok daha hızlı çalışıyor. Özellikle çok verinin olduğu bir yerde arama işlemi yapmak istersek ağaçlar üzerinden yapmak bizim avantajımıza olacaktır zaten Binary Search Tree bu nedenle vardır.

Ağaçlar ile İlgili Bazı Kavramlar

İlk bahsetmem gereken Node ve Root kavramları  node anlam olarak düğüm denir yani aşağıdaki şekillerdeki her bir yuvarlak şekil aslında bir nodetur. Root ise en baştaki kök düğüme denir.

Child (Çocuk)

Bir düğüme doğrudan bağlı olan düğümlere denir. Ağacın bir dalı gibi düşünebilirsiniz.

Sibling (Kardeş Düğüm)

Aynı düğüme bağlı olan düğümlere denir.

 

 

Parent (Evebeyn)

Kardeşlerin bağlı olduğu düğüm.

Descendant (Torun)

Bir düğümün çocuğuna bağlı olan düğümdür. Şekilldeki kökün torunu en alttaki soldaki düğümdür.

Degree (derece)

Çocuk veya alt ağaç sayısıdır.

Leaf (Yaprak)

Ağacın en altında bulunan ve çocuğu olmayan düğümdür.

Height (yükseklik)

Bir yaprağın en uzun yolu

Depth (Derinlik)

Ağacın köküne giden yolun uzunluğu

İkili ağaçların normal ağaçlardan farkı çocuk sayısı maksimum 2 olmasıdır.

 

 

 

 

 

 

 

Yukarıdaki iki resimde birer ikili ağaçtırlar ama farkları şudur üstteki resimdeki ağaç düzenli bir ağaçtır.

Binary Tree ler ile ilgili kodları github hesabımızdan bakabilirsiniz

 

 

Yazar Hakkında

Ömer Beden
Son Yazıları

Bu makaleyi 2 dakikada okuyabilirsiniz.