Você está na página 1de 4

Agac Yapisi

Verilerin birbirine bir agac yapisi olusturuyormus gibi sanal olarak birbirine
baglanmasiyla elde edilen hiyerarsik bir yapiya sahip bir very modelidir. Or isletim
sistemlerinde dosya yapisi, bir oyunun olabilecek tum ihtimallerinin tutulmasi, kod
cozme islemi…

Binary tree (ikili agac), sozluk, kodlama agaci, olarak adlandirilan agac
modelleri vardir. Agac yapisi ayni yapini tekrari oldugu icin, agac uzerine uygulanan
herhangi bir algoritmanin recorsive (oz yineleme) olarak yazilmasi uygun olur. Agac
modelini kurmak icin her duyumde birden fazla pointer kullanildigi icin bellek
gereksinimi fazladir. Buna karsin recorsive algoritma kurulabildigi icin calisma
zamani az olur. Or: n elemanli bir kume icinde sirali bir arama O(n) maliyetlidir oysa
ki agac modelinde O ornegin 1000 elemanli bir kumede bagli liste icin 1000
adet karsialstirma ikili agacta maksimum 10 adet karsilastirma yapilir.

Uc cocuk

kok

Bos agac

Ara dugum

Yaprak
Agac Uzerinde Bazi Kavramlar

Agac bir kok isaretcisi sonlu sayida duyumler ve onlari baglayan bir veri
modelidir. Hiyerarsik bir yapiya sahiptir. Bilgiler agacin duyumleri uzerinde tutulur
bir nevi bagli listedir. Agacin herbir dugumu icinde veriyi tutacak yer ve alt
cocuklara olan baglantilari gosteren isaretciler bulunur. Agaci olustururken
hafizadan bir dugum yeri alinir icerigi doldurulur. Agacin kuralina uygun sekilde
dogru yere yerlestirilir. Agac uzuerinde butun islemler kokten itibaren baslanir.
Henuz agaca hicbir dugum eklenmemisse kok degeri NULL dir. Aslinda agac
yapisibir yada daha fazla alt agaclarin birlesiminden olusmustur.

Cocuk (child) Gugum: bir dugume dogrudan bagli dugume, o dugumun


cocuklari denir.

Yaprak dugumun cocuklari yoktur.

Derecesi: kendisine bagli cocuk sayisidir.

Ata ve torun (ancestor & descendant): Bir dugumun ustundeki


dugumlere ata, cocuga bagli dugumlere torun denir.

Yukseklik (Height): Bir dugumde, kendi ailesinden en uzak yapraga olan


yoldur.

Agac Turleri
Uygulamaya yonelik olarak degisik agac turleri tanimlanabilir. Bir dugum en
fazla iki tane cocuga sahip olabilir. Agaci olusturma aslinda bir kurala gore ekleme
islemidir.

İlk eleman kok olarak alinir. Digerleri kucukse sola buyukse saga eklenir. Agac
dengeli olusmussa arama maliyeti O dir.

Kodlama agaci: bir alfabedeki karekterle kod atama islemi icin kullanilir.
Ornegin, Video, ses, goruntu..
Sozluk agaci: sozcuklerin tutulmasi icin kullanilan agactir amac arama
isleminin en performansli yapilmasidir.

Dugum Baglantisi Ile Agac


Kurulmasi

Duyum yapisinda herbir baglanti icin birer baglanti bilgileri tutulur. her
dugume m tane dugum baglaniyorsa her dugum icerisinde m tane isaretci (pointer)
tanimlanmalidir. Ancak bu durumda m’nin iki yada uc degeri icin avantajlidir. Yada
agacin her dugumunde yaklasik m tane dugum varsa avantajli olur bu durumda
agac dolu agac olarak tanimlanir.

Typedef m dereceli {

Veri degiskenleri;

isaretci tipi B[m];

}AgacM;

V0 v0

v1 v2 v3 v4

v1 v2 v3 v4

v5 v6 v7 v8 v9

v5 v6 v7 v8

v8

v10 v9

cocuk baglanti
kardes baglanti
Not: bu tur yapilanmada bellekten kazanc saglanmis ancak arama maliyeti artmistir.

Indis Bagintisiyla Agac Kurulmasi

Bu yontem veri kisminin bir dizi uzerinde tutulmasi esasina dayanir,


dizinin ilk elemani agacin kokudur. Daha sonrakiler agac uzerindeki herhangi
dugume karsilik gelir. Diger elemanlara erismek icin bir indis bagintisi bulunur buna
gore dugumler arasi iliski kurulur. Kokun indisi 0 dir.

- Kok indis 0 dir.

- J indisli dugumun sag alt dugumu = 2j+1

- J indisli dugumun sol alt dugumu = 2j+2

- Eger heseplanan ...... dizinin boyutundan buyuk cikarsa, o dugum yok


anlamindadir.

Not: m dereceli agac icin,

indis (b0)= mj+1

indis (b1)= mj+2

indis (bm-1)= mj=m

Not: Indis bagintisi kullanmanin dezavantaji fazla bellek alani harcar. Agacta
olmayan dugumler icin dizide yer ayirir. Avantaji ise algoritmasinin kolay olmasidir.

Você também pode gostar