vehbiakdogan

Senior Sofware Developer

Python

Python ile Ağaç Veri Yapısının Kodlanması

Bu yazımda Sizlerle ağaç yapısını inceleyeceğiz ve python dilinde basit bir ağaç yapısı yazacağız.

Ağaç Yapısı Nedir

Ağaç veri yapısını açıklamak gerekirse: Hepimiz ilk okulda fen bilgisi dersinde veya lisede biyoloji dersinde soy ağacı çizmişizdir dede,baba,çocuk şeklinde bizim programlama dilindede ağaç veri yapısı aynen ona benzer.
ağacın ilk katmanına kök(root) denir.
roota bağlanan alt ağaçlara ise Çocuk denir.

  • Sağ kısımdaki alt ağaca Rootun sağ child(çocuğu)denir.
  • Sol kısımdaki alt ağaca rootun sol child(çocuğu) denir.

en uçtaki çocuklara ise yaprak denir.

Ağaç Yapısı Örneği

Python ile ağaç yapısı

# -*- coding: cp1254 -*-
def Agac(root):
return [root, [], []] # ağacı ve iki alt çocugunu oluşturduk

def saginaEkle(root,eklenecek):
right=root.pop(2) # sag çocugunu silip right ye atadık
if(len(right)>1): # alt çocukta eleman varsa
root.insert(2,[eklenecek,right,[]]) # sag çocuğuna alt çocuk ekledik
else: # alt çocukta eleman yoksa
root.insert(2,[eklenecek, [], []])
return root


def solunaEkle(root,eklenecek):
left=root.pop(1) # sol çocugunu silip left ye atadık
if(len(left)>1): # alt çocukta eleman varsa
root.insert(1,[eklenecek,left,[]]) # sol çocuğuna alt çocuk ekledik
else: # alt çocukta eleman yoksa
root.insert(1,[eklenecek, [], []])
return root

def KokuGetir(root): # Ağacın kökünü(root) getirir.
return root[0]

def sagCocuguGetir(root): # Ağacın Sağ Çocugunu Getirir.
return root[2]

def solCocuguGetir(root): # Ağacın Sol Çocuğu Getirir
return root[1]

Şimdi Çalıştıralım

>> agac=Agac(5) # kökü 5 olan ağaç
>>> agac
[5, [], []]
>>> saginaEkle(agac,4) # sağ çocuğa 4ü ekledik
[5, [], [4, [], []]]
>>> solunaEkle(agac,0) # soluna sıfır ekledik
[5, [0, [], []], [4, [], []]]
>>> KokuGetir(agac) # kökünü getirsin 5 gelecek
5
>>> sagCocuguGetir(agac) # sağ çocuğunu Getirsin
[4, [], []]
>>> solCocuguGetir(agac) # sol çocuğunu Getirsin
[0, [], []]
>>>

Gördüğünüz Gibi basit bir ağaç yapısı oluşturmuş olduk.
Daha fazla geliştirilebilir yeni fonksiyonlarda yazılabilir artık orası size kalmış. ekleme yaptığınız fonksiyonlarıda bana mail olarak atarsanız paylaşırım herkes faydalanır.
Unutmayalımki en iyi yazılımcı bildiğini paylaşan yazılımcıdır.
Birdahaki yazımızda görüşmek üzere…

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir