public KisiBilgileri BireyselGirisYap(double tc, string sifre) { İkiliAramaAgacDugumu tempDugum = new İkiliAramaAgacDugumu(); KisiBilgileri bos = new KisiBilgileri(); tempDugum = KisiBilgileriniBul(tc); if (tempDugum == null) { return(bos); } if (tempDugum.Kisi != null) { if (tempDugum.Kisi.sifre == sifre) { return(tempDugum.Kisi); } else { return(bos); } } else { return(bos); } }
public İkiliAramaAgacDugumu KisiBilgileriniBul(double tc) { İkiliAramaAgacDugumu tempDugum = new İkiliAramaAgacDugumu(); tempDugum = Ara(tc); return(tempDugum); }
private void PostOrderInt(İkiliAramaAgacDugumu dugum) { if (dugum == null) { return; } PostOrderInt(dugum.sol); PostOrderInt(dugum.sag); ZiyaretPostOrder(dugum); }
private void InOrderInt(İkiliAramaAgacDugumu dugum) { if (dugum == null) { return; } InOrderInt(dugum.sol); ZiyaretInOrder(dugum); InOrderInt(dugum.sag); }
private İkiliAramaAgacDugumu AraInt(İkiliAramaAgacDugumu dugum, double tc) { if (dugum == null) { return(null); } else if ((double)dugum.Tc == tc) { return(dugum); } else if ((double)dugum.Tc > tc) { return(AraInt(dugum.sol, tc)); } else { return(AraInt(dugum.sag, tc)); } }
public void Ekle(double deger, KisiBilgileri kisi) { //Yeni eklenecek düğümün parent'ı İkiliAramaAgacDugumu tempParent = new İkiliAramaAgacDugumu(); //Kökten başla ve ilerle İkiliAramaAgacDugumu tempSearch = kok; while (tempSearch != null) { tempParent = tempSearch; //Deger zaten var, çık. if (deger == (double)tempSearch.Tc) { return; } else if (deger < (double)tempSearch.Tc) { tempSearch = tempSearch.sol; } else { tempSearch = tempSearch.sag; } } İkiliAramaAgacDugumu eklenecek = new İkiliAramaAgacDugumu(deger, kisi); //Ağaç boş, köke ekle if (kok == null) { kok = eklenecek; } else if (deger < (double)tempParent.Tc) { tempParent.sol = eklenecek; } else { tempParent.sag = eklenecek; } }
public İkiliAramaAgacDugumu MinDeger(İkiliAramaAgacDugumu temp) { if (temp.sol == null) { return(temp); } while (temp.sol != null) { var tempParent = temp.sol; if ((double)temp.Tc > (double)tempParent.Tc) { parentBuyukMu = true; araParent = temp; } else { parentBuyukMu = false; } temp = temp.sol; } return(temp); }
public int maxDepth(İkiliAramaAgacDugumu node) { if (node == null) { return(0); } else { /* compute the depth of each subtree */ int lDepth = maxDepth(node.sag); int rDepth = maxDepth(node.sol); /* use the larger one */ if (lDepth > rDepth) { return(lDepth + 1); } else { return(rDepth + 1); } } }
private void ZiyaretInOrder(İkiliAramaAgacDugumu dugum) { dugumSayaci++; InOrderDugumlerListesi.Add(dugum); }
private İkiliAramaAgacDugumu Successor(İkiliAramaAgacDugumu silDugum) { return(MinDeger(silDugum.sag)); }
public bool Sil(double tc) { İkiliAramaAgacDugumu current = kok; İkiliAramaAgacDugumu parent = kok; bool issol = true; //DÜĞÜMÜ BUL while ((double)current.Tc != tc) { parent = current; if (tc < (double)current.Tc) { issol = true; current = current.sol; } else { issol = false; current = current.sag; } if (current == null) { return(false); } } //DURUM 1: YAPRAK DÜĞÜM if (current.sol == null && current.sag == null) { if (issol) { parent.sol = null; parent.Kisi = null; parent.Tc = 0; } else { parent.sag = null; parent.Kisi = null; parent.Tc = 0; } } //DURUM 2: TEK ÇOCUKLU DÜĞÜM else if (current.sag == null) { if ((double)parent.Tc > tc) { parent.sol = current.sol; parent.Kisi = null; parent.Tc = 0; } else { parent.sag = current.sol; parent.Kisi = null; parent.Tc = 0; } } else if (current.sol == null) { if ((double)parent.Tc < tc) { parent.sag = current.sag; parent.Kisi = null; parent.Tc = 0; } else { parent.sol = current.sag; parent.Kisi = null; parent.Tc = 0; } } //DURUM 3: İKİ ÇOCUKLU DÜĞÜM else { İkiliAramaAgacDugumu successor = Successor(current); current.Tc = successor.Tc; successor = null; if (parentBuyukMu) { araParent.sol = successor.sag; } } return(true); parentBuyukMu = false; }
public İkiliAramaAgacı(İkiliAramaAgacDugumu kok) { this.kok = kok; }