private int ElamanSayisiInt(IkiliAramaAgacDugumu dugum) { int elemanSayisi = 0; if (dugum != null) { elemanSayisi = 1; elemanSayisi += ElamanSayisiInt(dugum.sol); elemanSayisi += ElamanSayisiInt(dugum.sag); } return(elemanSayisi); }
public int YaprakSayisi(IkiliAramaAgacDugumu dugum) { if (dugum == null)//Düğümün içi boşsa demekki öyle bir düğüm yoktur yani NULL'dır. { return(0); } if (dugum.sag != null || dugum.sol != null)//Düğümün sağı ve solunu kontrol ediyorum. { return(YaprakSayisi(dugum.sol) + YaprakSayisi(dugum.sag)); } else { return(sayacYaprak + 1); } }
private IkiliAramaAgacDugumu AraInt(IkiliAramaAgacDugumu dugum, string anahtar) { if (dugum == null) { return(null); } else if (((Kisi)dugum.veri).Ad == anahtar) //düğümdeki kişi adı arana kişiye eşitse düğümü döndür { return(dugum); } else if (((Kisi)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 ParentSuccessor = silDugum; IkiliAramaAgacDugumu current = silDugum.sag; IkiliAramaAgacDugumu successor = silDugum; while (!(current == null)) { ParentSuccessor = current; successor = current; current = current.sol; } if (!(successor == silDugum.sag)) { ParentSuccessor.sol = successor.sag; successor.sag = silDugum.sag; } return(successor); }
private IkiliAramaAgacDugumu AraInt(IkiliAramaAgacDugumu dugum, int anahtar) { if (dugum == null) { return(null); } else if (((Kisi)dugum.veri).TCKimlikNo == anahtar) { return(dugum); } else if (((Kisi)dugum.veri).TCKimlikNo > anahtar) { return(AraInt(dugum.sol, anahtar)); } else { 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 void btnBasvuruYap_Click(object sender, EventArgs e) { if (ListIsIlanlari.SelectedItem == null) { MessageBox.Show("Lütfen işyeri seçiniz!!!"); } else { if (txtBasvuranTCK.Text == "") { MessageBox.Show("Başvuracak kişinin TC kimlik numarasını giriniz."); } else { IkiliAramaAgacDugumu bul = new IkiliAramaAgacDugumu(); bul = IkiliAramaAgaci.Ara(Convert.ToInt32(txtBasvuranTCK.Text)); if (bul == null) { MessageBox.Show("Kişi Bilgisi Bulunamadı!"); } else { IlanBilgileri ilan = new IlanBilgileri(); ilan = hashChainTable.GetIlan(ListIsIlanlari.SelectedIndex + 1); Kisi kisi1 = ((Kisi)bul.veri); if (((IlanBilgileri)ilan).heapIlanBasvurusu.Search(((IlanBilgileri)ilan).heapIlanBasvurusu, kisi1) == true) { MessageBox.Show("Önceden başvurduğunuz ilana tekrar başvuramazsınız!!!."); } else { Random random = new Random(); kisi1.IsUygunluk = random.Next(0, 10); txtIseUygunlukPuani.Text = Convert.ToString(kisi1.IsUygunluk); ((IlanBilgileri)ilan).heapIlanBasvurusu.Insert(kisi1); MessageBox.Show("Başvurunuz Alınmıştır."); } } } } }
private int DerinlikBulInt(IkiliAramaAgacDugumu dugum) { if (dugum == null) { return(0); } else { int solHeight = 0, sagHeight = 0; solHeight = DerinlikBulInt(dugum.sol); sagHeight = DerinlikBulInt(dugum.sag); if (solHeight > sagHeight) { return(solHeight + 1); } else { return(sagHeight + 1); } } }
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(Kisi deger) { //Yeni eklenecek düğümün parent'ı IkiliAramaAgacDugumu tempParent = new IkiliAramaAgacDugumu(); //Kökten başla ve ilerle IkiliAramaAgacDugumu tempSearch = kok; while (tempSearch != null) { tempParent = tempSearch; //Deger zaten var, çık. if (deger.TCKimlikNo == ((Kisi)tempSearch.veri).TCKimlikNo) { return; } else if (deger.TCKimlikNo < ((Kisi)tempSearch.veri).TCKimlikNo) { tempSearch = tempSearch.sol; } else { tempSearch = tempSearch.sag; } } IkiliAramaAgacDugumu eklenecek = new IkiliAramaAgacDugumu(deger); //Ağaç boş, köke ekle if (kok == null) { kok = eklenecek; } else if (deger.TCKimlikNo < ((Kisi)tempParent.veri).TCKimlikNo) { tempParent.sol = eklenecek; } else { tempParent.sag = eklenecek; } }
private void btnGuncelle_Click(object sender, EventArgs e) { IkiliAramaAgacDugumu = IkiliAramaAgaci.Ara(Convert.ToInt32(AdayTCKimlik.Text)); if (IkiliAramaAgacDugumu == null) { MessageBox.Show("Böyle biri bulunamadı!!!"); } else { kisi = ((Kisi)IkiliAramaAgacDugumu.veri); kisi.Ad = txtGuncelleAd.Text; kisi.Soyad = txtGuncelleSoyad.Text; kisi.TelNo = txtGuncelleTelNo.Text; kisi.Eposta = txtGuncelleEposta.Text; kisi.Uyruk = txtGuncelleUyruk.Text; kisi.DogumYeri = txtGuncelleDogumYeri.Text; kisi.MedeniDurum = txtGuncelleMedeniDurum.Text; kisi.Adres = txtGuncelleAdresBilgisi.Text; kisi.ReferansKisiler = txtGuncelleReferans.Text; kisi = new Kisi(); MessageBox.Show("Başarıyla Aday Güncellendi."); } }
private void btnAdayAra_Click(object sender, EventArgs e) { IkiliAramaAgacDugumu = IkiliAramaAgaci.Ara(Convert.ToInt32(txtTCKimlikNo.Text)); if (IkiliAramaAgacDugumu == null) { MessageBox.Show("Böyle biri bulunamadı!!!"); } else { Node egitimBilgisi = new Node(); kisi = ((Kisi)IkiliAramaAgacDugumu.veri); txtGuncelleAd.Text = kisi.Ad; txtGuncelleSoyad.Text = kisi.Soyad; txtGuncelleTelNo.Text = kisi.TelNo; txtGuncelleEposta.Text = kisi.Eposta; txtGuncelleYabanciDil.Text = kisi.YabanciDil; txtGuncelleUyruk.Text = kisi.Uyruk; txtGuncelleDogumYeri.Text = kisi.DogumYeri; txtGuncelleMedeniDurum.Text = kisi.MedeniDurum; txtGuncelleAdresBilgisi.Text = kisi.Adres; txtGuncelleReferans.Text = kisi.ReferansKisiler; Node nodeEgitim = new Node(); nodeEgitim = kisi.EgitimDurumu.Head; while (nodeEgitim != null) { listEgitimBilgileri.Items.Add(((EgitimDurumuBilgileri)nodeEgitim.Data).MezunOlunanOkulAdi.ToString()); nodeEgitim = nodeEgitim.Next; } Node nodeDeneyim = new Node(); nodeDeneyim = kisi.IsTecrubeleri.Head; while (nodeDeneyim != null) { listIsBilgileri.Items.Add(((IsDeneyimi)nodeDeneyim.Data).Adi.ToString()); nodeDeneyim = nodeDeneyim.Next; } } }
private void Ziyaret(IkiliAramaAgacDugumu dugum) { dugumler += ((Kisi)dugum.veri).Ad + Environment.NewLine; }
public bool Sil(long deger) { IkiliAramaAgacDugumu current = kok; IkiliAramaAgacDugumu parent = kok; bool issol = true; //DÜĞÜMÜ BUL while (((Kisi)current.veri).TCKimlikNo != deger) { parent = current; if (deger < ((Kisi)current.veri).TCKimlikNo) { issol = true; current = current.sol; } else { issol = false; current = current.sag; } if (current == null) { return(false); } } ((Kisi)current.veri).IsTecrubeleri = null; ((Kisi)current.veri).EgitimDurumu = null; //DURUM 1: YAPRAK DÜĞÜM if (current.sol == null && current.sag == null) { if (current == kok) { kok = null; } else if (issol) { parent.sol = null; } else { parent.sag = null; } } //DURUM 2: TEK ÇOCUKLU DÜĞÜM else if (current.sag == null) { if (current == kok) { 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; } } //DURUM 3: İKİ ÇOCUKLU DÜĞÜM 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); }
public IkiliAramaAgacDugumu(object veri) { this.veri = veri; sol = null; sag = null; }
//********************************************************************** private void btnAra_Click_1(object sender, EventArgs e) { if (txtAra.Text == "") { MessageBox.Show("Arama yapmak için önce aranacak kişi ismini girin."); } else { //Eski arama bilgilerinde eski arana kişini eğitim bilgileri listbox'dan silindi. lbEgitim.Items.Clear(); lbDeneyim.Items.Clear(); //Ara methodu ile kişi ağacı üzerinde kişi adına göre arama işlemi gerçekleştirildi dugum = ka.Ara(txtAra.Text); //kişi ikili arama ağacında bulunamazsa null değer döner if (dugum == null) { MessageBox.Show("Aradığınız kişi bulunamadı."); txtAra.Text = ""; } else { //ikili arama ağacı üzerinde kişi bulunursa bilgileri gösterildi k1 = ((Kisi)dugum.veri); txtGunAd.Text = ((Kisi)dugum.veri).Ad; txtGunAdres.Text = ((Kisi)dugum.veri).Adres; txtGunTelefon.Text = ((Kisi)dugum.veri).Telefon; txtGunEposta.Text = ((Kisi)dugum.veri).Eposta; txtGunReferans.Text = ((Kisi)dugum.veri).Referans; txtGunDogumYeri.Text = ((Kisi)dugum.veri).DogumYeri; txtGunIlgiAlanlari.Text = ((Kisi)dugum.veri).IlgiAlanlari; dtGunDogumTarihi.Value = (Convert.ToDateTime((k1.DogumTarihi))); string ingilizce = ((Kisi)dugum.veri).YabanciDil.Find(stringX => stringX == cbGunIngilizce.Text); string diger = ((Kisi)dugum.veri).YabanciDil.Find(stringX => stringX == cbGunDiger.Text); if (ingilizce == cbGunIngilizce.Text) { cbGunIngilizce.Checked = true; } else { cbGunIngilizce.Checked = false; } if (diger == cbGunDiger.Text) { cbGunDiger.Checked = true; } else { cbGunDiger.Checked = false; } MedeniDurum m = new MedeniDurum(); m = ((Kisi)dugum.veri).medeniDurum; if (m == MedeniDurum.Evli) { rbGunEvli.Checked = true; } else if (m == MedeniDurum.Bekar) { rbGunBekar.Checked = true; } Uyruk u = new Uyruk(); u = ((Kisi)dugum.veri).uyruk; if (u == Uyruk.TC) { rbGunUyrukTC.Checked = true; } else if (u == Uyruk.KKTC) { rbGunUyrukKKTC.Checked = true; } else if (u == Uyruk.Yabanci) { rbGunUyrukYabanci.Checked = true; } //Kişinin kayıtlı eğitim bilgileri eğitim bilgisi listesi null olana kadar listelendi Node nodeEgitim = new Node(); nodeEgitim = ((Kisi)dugum.veri).EgitimBilgisi.Head; while (nodeEgitim != null) { lbEgitim.Items.Add(((Egitim)nodeEgitim.Data).OkulAdi.ToString()); nodeEgitim = nodeEgitim.Next; } //Kişinin kayıtlı deneyim bilgileri deneyim bilgisi listesi null olana kadar listelendi Node nodeDeneyim = new Node(); nodeDeneyim = ((Kisi)dugum.veri).Deneyimler.Head; while (nodeDeneyim != null) { lbDeneyim.Items.Add(((IsDeneyimi)nodeDeneyim.Data).IsAd.ToString()); nodeDeneyim = nodeDeneyim.Next; } } } }
public IkiliAramaAgaci(IkiliAramaAgacDugumu kok) { this.kok = kok; }
public void Ekle(Kisi 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 == ((Kisi)tempSearch.veri).Ad) { return; } else if (deger.Ad[0] < ((Kisi)tempSearch.veri).Ad[0]) //İlk harflerin ascii karşılığı küçükse ağaçta sola git { tempSearch = tempSearch.sol; } else if (deger.Ad[0] == ((Kisi)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] == ((Kisi)tempSearch.veri).Ad[i]) //eşit olması durumunda diğer harfe bak { i++; continue; } else if (deger.Ad[i] < ((Kisi)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] < ((Kisi)tempParent.veri).Ad[0]) { tempParent.sol = eklenecek; } else if (deger.Ad[0] == ((Kisi)tempParent.veri).Ad[0] && isSol) { tempParent.sol = eklenecek; } else { tempParent.sag = eklenecek; } }
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 (((Kisi)current.veri).Ad != deger) { parent = current; if (deger[0] < ((Kisi)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] == ((Kisi)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] == ((Kisi)current.veri).Ad[i]) { i++; continue; } else if (deger[i] < ((Kisi)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. ((Kisi)current.veri).EgitimBilgisi = null; ((Kisi)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 } }