private int ElamanSayisiInt(IkiliAramaAgacDugumu dugum) { int elemanSayisi = 0; if (dugum != null) { elemanSayisi = 1; elemanSayisi += ElamanSayisiInt(dugum.sol); elemanSayisi += ElamanSayisiInt(dugum.sag); } return(elemanSayisi); }
private void button22_Click(object sender, EventArgs e) { if (textBox55.Text == "") { MessageBox.Show("Aranacak Otelin Adını Giriniz..."); } else { dugum = otlagac.Ara(textBox55.Text); if (dugum == null) { MessageBox.Show("Otel Bulunamadı..."); } else { textBox9.Text = ((oteller)dugum.veri).otldetaylar.PuanCek().ToString(); } } }
private IkiliAramaAgacDugumu AraInt(IkiliAramaAgacDugumu dugum, string anahtar) { if (dugum == null) { return(null); } else if (((oteller)dugum.veri).Ad == anahtar) //düğümdeki kişi adı arana kişiye eşitse düğümü döndür { return(dugum); } else if (((oteller)dugum.veri).Ad[0] > anahtar[0]) //düğümdeki kişi adının ilk harfi aranan kişinin ilk harfindan büyükse sola git { return(AraInt(dugum.sol, anahtar)); } else //düğümdeki kişi adının ilk harfi aranan kişinin ilk harfindan küçükse sağa git { return(AraInt(dugum.sag, anahtar)); } }
private IkiliAramaAgacDugumu Successor(IkiliAramaAgacDugumu silDugum) { IkiliAramaAgacDugumu successorParent = silDugum; IkiliAramaAgacDugumu successor = silDugum; IkiliAramaAgacDugumu current = silDugum.sag; //silinecek düğümün sağı varsa current'a ata while (current != null) { //Current null değilse null olana kadar sola git successorParent = successor; successor = current; current = current.sol; } if (successor != silDugum.sag) //successor silinecek düğümün sağıdaysa yani daha küçük yoksa(sola gidilmediyse) yer değiştirme işlemi yap daha sonra successor'ü gönder { successorParent.sol = successor.sag; successor.sag = silDugum.sag; } return(successor); }
private int DerinlikBulInt(IkiliAramaAgacDugumu dugum) { if (dugum == null) { return(0); } else { int solYukseklik = 0, sagYukseklik = 0; solYukseklik = DerinlikBulInt(dugum.sol); //Düğümün solu oldukça sola git sagYukseklik = DerinlikBulInt(dugum.sag); //Düğümün sağı oldukça sağa git if (solYukseklik > sagYukseklik) { return(solYukseklik + 1); } else { return(sagYukseklik + 1); } } }
public void Ekle(oteller deger) { Boolean isSol = true; //Yeni eklenecek düğümün parent'ını tutmak için kullanıldı IkiliAramaAgacDugumu tempParent = new IkiliAramaAgacDugumu(); //Kökten itibaren ilerlemek için kullanıldı IkiliAramaAgacDugumu tempSearch = kok; while (tempSearch != null) { tempParent = tempSearch; //Deger zaten var. Eklemeden çık. if (deger.Ad == ((oteller)tempSearch.veri).Ad) { return; } else if (deger.Ad[0] < ((oteller)tempSearch.veri).Ad[0]) //İlk harflerin ascii karşılığı küçükse ağaçta sola git { tempSearch = tempSearch.sol; } else if (deger.Ad[0] == ((oteller)tempSearch.veri).Ad[0]) //ilk harflerin eşit olması durumunda diğer harfler kontrol edilir { int i = 1; while (deger.Ad[i] != null) //adın harfleri bitene kadar ve farklı harfi bulana kadar ilerle { if (deger.Ad[i] == ((oteller)tempSearch.veri).Ad[i]) //eşit olması durumunda diğer harfe bak { i++; continue; } else if (deger.Ad[i] < ((oteller)tempSearch.veri).Ad[i]) //küçük olması durumunda ağaçta sola ilerle ve çık { tempSearch = tempSearch.sol; break; } else //büyük olması durumunda ağaçta sağa ilerle ve çık { isSol = false; tempSearch = tempSearch.sag; break; } } } else //ilk harfin ascii karşılığı büyükse ağaçta sağa git { tempSearch = tempSearch.sag; } } IkiliAramaAgacDugumu eklenecek = new IkiliAramaAgacDugumu(deger); //Yukarıda bulunan konuma yeni değeri ekle if (kok == null) { kok = eklenecek; } else if (deger.Ad[0] < ((oteller)tempParent.veri).Ad[0]) { tempParent.sol = eklenecek; } else if (deger.Ad[0] == ((oteller)tempParent.veri).Ad[0] && isSol) { tempParent.sol = eklenecek; } else { tempParent.sag = eklenecek; } }
private void Ziyaret(IkiliAramaAgacDugumu dugum) { dugumler += ((oteller)dugum.veri).Ad + Environment.NewLine; }
public bool Sil(string deger) { if (kok == null) //ağaç boşsa silme işlemi yapılamaz { return(false); } else { IkiliAramaAgacDugumu current = kok; IkiliAramaAgacDugumu parent = kok; bool issol = true; //Kişi adına göre silinecek düğümü bul while (((oteller)current.veri).Ad != deger) { parent = current; if (deger[0] < ((oteller)current.veri).Ad[0]) //silinecek kişi isminin ilk harfi düğümdeki kişinin ilk harfnden küçükse silinecek değer ağacın sol tarafındadır. sola git. { issol = true; current = current.sol; } else if (deger[0] == ((oteller)current.veri).Ad[0]) { //silinecek kişi isminin ilk harfi düğümdeki kişinin ilk harfine eşitse diğer harfleri kontrol et int i = 1; while (deger[i] != null) //Farklı harfi bulana kadar dön { if (deger[i] == ((oteller)current.veri).Ad[i]) { i++; continue; } else if (deger[i] < ((oteller)current.veri).Ad[i]) { current = current.sol; break; } else { issol = false; current = current.sag; break; } } } else//silinecek kişi isminin ilk harfi düğümdeki kişinin ilk harfinden büyükse silinecek değer ağacın sağ tarafındadır. sağa git. { issol = false; current = current.sag; } if (current == null) { return(false); } } //Current(silinecek düğüm) bulunursa ilk olarak onun eğitim ve iş bilgilerini sil. //((oteller)current.veri).EgitimBilgisi = null; // ((oteller)current.veri).Deneyimler = null; //Daha sonra direk current düğümü sil. //Düğüm yaprak düğümse buraya gir if (current.sol == null && current.sag == null) { if (current == kok) { kok = null; } else if (issol) { parent.sol = null; } else { parent.sag = null; } } //Düğüm tek çocuklu düğümse buraya gir. else if (current.sag == null) { if (current == kok) { kok = current.sol; } else if (issol) { parent.sol = current.sol; } else { parent.sag = current.sol; } } else if (current.sol == null) { if (current == kok) { kok = current.sag; } else if (issol) { parent.sol = current.sag; } else { parent.sag = current.sag; } } //Düğüm iki çocuklu düğümse buraya gir. else { IkiliAramaAgacDugumu successor = Successor(current); if (current == kok) { kok = successor; } else if (issol) { parent.sol = successor; } else { parent.sag = successor; } successor.sol = current.sol; } return(true); //silme işlemi başarıyla gerçekleştiyse true dön } }
public OtelAgaci(IkiliAramaAgacDugumu kok) { this.kok = kok; }
public IkiliAramaAgacDugumu(object veri) { this.veri = veri; sol = null; sag = null; }