IPR TREE

Merhaba arkadaşlar bugün sizlere IPR TREElerin C# kodunu paylaşmak istiyorum okulda Dosya organizasyonu dersinde hocanın verdiği bir ödev olup yapan sayısı bir elin parmaklarını geçmemektedir:)

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace RamazanCESUR111180014
{
public class IprAgaci
{
private int value;
private IprAgaci Sol;
private IprAgaci right;
private int Boyut;
public IprAgaci ParentDugum;
public IprAgaci(int value)
{
this.value = value;
Sol = null;
right = null;
Boyut = 0;        }

public int GtrValue()
{            return value;        }

public void AtaValue(int value)
{
this.value = value;
}
public IprAgaci GtrSol()
{
return Sol;
}
public void AtaSol(IprAgaci Sol)
{
this.Sol = Sol;
}
public IprAgaci GtrRight()
{
return right;
}
public void AtaRight(IprAgaci right)
{
this.right = right;
}
public int GtrBoyut()
{
return Boyut;
}
public void AtaBoyut(int Boyut)
{
this.Boyut = Boyut;
}    }
public class IprClass
{
public IprAgaci Bos(IprAgaci t)
{
if (t != null)
{
Bos(t.GtrSol());
Bos(t.GtrRight());
t = null;
}
return null;
}
public IprAgaci bul(int value, IprAgaci t)
{
if (t == null)            {
return null;            }

if (value < t.GtrValue())
{
return bul(value, t.GtrSol());
}

else if (value > t.GtrValue())
{

return bul(value, t.GtrRight());

}

else

return t;

}

public IprAgaci bulEnKucuk(IprAgaci t)
{

if (t == null)
{

return null;

}

else if (t.GtrSol() == null)

return t;

else

return bulEnKucuk(t.GtrSol());

}

public IprAgaci bulEnBuyuk(IprAgaci t)
{

if (t != null)

while (t.GtrRight() != null)

t = t.GtrRight();

return t;

}
private static int Sol = 0;
private int SolDolas(IprAgaci Dugum)
{
IprAgaci temp = Dugum;
if (temp.ParentDugum == null)
{
return 0;
}
else
{
temp = temp.GtrSol();
Sol++;
}
return Sol;
}
private static int Sag = 0;
private int SagDolas(IprAgaci Dugum)
{
IprAgaci gecici = Dugum;
if (gecici.ParentDugum == null)
{
return 0;
}
else
{
gecici = gecici.GtrRight();
Sag = Sag + 1;
}
return Sag;
}

public static int GtrBoyut(IprAgaci durum)
{

if (durum == null)

return -1;

else

return durum.GtrBoyut();

}

public static int EnBuyuk(int solYukseklik, int sagYukseklik)
{            return solYukseklik > sagYukseklik ? solYukseklik : sagYukseklik;        }

public static IprAgaci singleDondurmeWithSol(IprAgaci myDugum)
{
IprAgaci GeciciDugum;

if (Sag >= Sol)
{
GeciciDugum = myDugum.GtrSol();
myDugum.AtaSol(GeciciDugum.GtrRight());
GeciciDugum.AtaRight(myDugum);
myDugum.AtaBoyut(EnBuyuk(GtrBoyut(myDugum.GtrSol()), GtrBoyut(myDugum.GtrRight())) + 1);
GeciciDugum.AtaBoyut(EnBuyuk(GtrBoyut(GeciciDugum.GtrSol()), myDugum.GtrBoyut()) + 1);
return GeciciDugum;
}
else
{                return null;            }        }
public static IprAgaci singleDondurmeWithRight(IprAgaci GeciciDugum)
{
IprAgaci myDugum;
myDugum = GeciciDugum.GtrRight();
GeciciDugum.AtaRight(myDugum.GtrSol());
myDugum.AtaSol(GeciciDugum);
GeciciDugum.AtaBoyut(EnBuyuk(GtrBoyut(GeciciDugum.GtrSol()), GtrBoyut(GeciciDugum.GtrRight())) + 1);
myDugum.AtaBoyut(EnBuyuk(GtrBoyut(myDugum.GtrRight()), GeciciDugum.GtrBoyut()) + 1);
return myDugum;
}

public static IprAgaci doubleDondurmeWithSol(IprAgaci GeciciDugum)
{

GeciciDugum.AtaSol(singleDondurmeWithRight(GeciciDugum.GtrSol()));

return singleDondurmeWithSol(GeciciDugum);

}

public static IprAgaci doubleDondurmeWithRight(IprAgaci GeciciDugum)
{
GeciciDugum.AtaRight(singleDondurmeWithSol(GeciciDugum.GtrRight()));
return singleDondurmeWithRight(GeciciDugum);        }
public IprAgaci ekleme(int value, IprAgaci t)
{
if (t == null)            {
t = new IprAgaci(value);
}
else if (value < t.GtrValue())
{    t.AtaSol(ekleme(value, t.GtrSol()));

if (GtrBoyut(t.GtrSol()) – GtrBoyut(t.GtrRight()) == 2)

if (value < t.GtrSol().GtrValue())
{
t = singleDondurmeWithSol(t);
}
else

t = doubleDondurmeWithSol(t);

}

else if (value > t.GtrValue())
{

t.AtaRight(ekleme(value, t.GtrRight()));
if (GtrBoyut(t.GtrRight()) – GtrBoyut(t.GtrSol()) == 2)
if (value > t.GtrRight().GtrValue())
t = singleDondurmeWithRight(t);
else
t = doubleDondurmeWithRight(t);            }
t.AtaBoyut(EnBuyuk(GtrBoyut(t.GtrSol()), GtrBoyut(t.GtrRight())) + 1);
return t;        }
public int geriAl(IprAgaci t)
{            return t.GtrValue();        }

public void preOrder(IprAgaci t)
{
Console.WriteLine(t.GtrValue());
if (t.GtrSol() != null)
{

preOrder(t.GtrSol());
}
if (t.GtrRight() != null)
{
preOrder(t.GtrRight());
}
}
static void Main(string[] args)
{

string myway;
Console.WriteLine(“Sayi üretmek için 2 e basinizn diger durum icin herhangi bir tusa basiniz “);
int istek;
Console.WriteLine(“Metin belgesi yoksa rastgele atama yapilacaktir”);
istek = Convert.ToInt32(Console.ReadLine());
IprClass ipr = new IprClass();
IprAgaci t;
IprAgaci durum;
int i;
int j = 0;
t = ipr.Bos(null);

if (istek == 0)
{
for (i = 0; i < 50; i++, j = (j + 7) % 50)

t = ipr.ekleme(j, t);

for (i = 0; i < 50; i++)

if ((durum = ipr.bul(i, t)) == null || ipr.geriAl(durum) != i)
{
Console.WriteLine(i + “. elemanda  hata var  “);
}
Console.WriteLine(“EnKucuk eleman ” + ipr.geriAl(ipr.bulEnKucuk(t))
+ ” EnBuyuk eleman ” +
ipr.geriAl(ipr.bulEnBuyuk(t)));
ipr.preOrder(t);
Console.Read();
}
else
{
try
{
Console.WriteLine(“metin yolu gir”);
myway = Console.ReadLine();

using (StreamReader sr = new StreamReader(myway))
{
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);

t = ipr.ekleme(Convert.ToInt32(line), t);
}
}
}
catch
{
throw new Exception(“dogru bir yol girdiginizden emin olunuz “);
}
for (i = 0; i < 0; i++)
if ((durum = ipr.bul(i, t)) == null || ipr.geriAl(durum) != i)
Console.WriteLine(“hata var  ” + i);
Console.WriteLine(“EnKucukinmum eleman ” + ipr.geriAl(ipr.bulEnKucuk(t)) + ” EnBuyukimum eleman ” + ipr.geriAl(ipr.bulEnBuyuk(t)));
ipr.preOrder(t);
Console.Read();
}
}
}
}

Faydalı olması dileğiyle…