Ağaca Düğüm Ekleme – Listeleme

Forum Sayfası Veri Yapıları ve Algoritmalar

Ekleme Algoritması

Eğer kök boşsa, hemen köke ekle.
Eğer kök boş değilse, 
* eklenecek değer kökten küçükse sola, büyükse sağa yerleştirilmeli.
eklenecek değer kökten küçükse 
         sol boşsa hemen sola yerleştir.
                 değilse ekleme(kok->sol, ekleme)

eklenecek deger kökten büyükse 
          sağ boşsa hemen sağa yerleştir.
                  değilse ekleme(kok->sağ, ekleme)

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct tree{int x;
	    tree *sol;
	    tree *sag;
};
typedef tree agac;

void a_ekleme(agac *kok, agac *eklenen)
{
	// ağac yoksa
	if(kok==NULL)  kok=eklenen; 
	else {
		if (eklenen->x <= kok->x){
			if (kok->sol==NULL)	kok->sol =eklenen;
				else ekle(kok->sol, eklenen);
			}
			else{
				if(kok->sag==NULL) kok->sag =eklenen;
				else ekle(kok->sag,eklenen);
			}
		}
}

Listeleme Algoritması

kok NULL değerine ulaşana kadar sol’a git yaz.

void a_listeleme(agac *kok)
{
	if (kok!=NULL){
		a_listeleme(kok->sol);
		printf("\n%d",kok->x);
		a_listeleme(kok->sag);
	}
}

Arama Algoritması

agac *ara(agac *kok, int aranan)
{
	while(kok!=NULL && kok->x != aranan)
	{
		if(aranan<=kok->x)
			// aranan küçükse sola git
			kok = kok->sol;
		else
			kok = kok->sag;
	}
	return kok; // eğer bulunursa bulunan nodenin adresi yoksa null değeri.
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir