예제 #1
0
        private void Ziyaret(İkiliAramaAgacDugumu dugum)
        {
            tekdugum = ((Kisiler)dugum.veri);

            dugumler += ((Kisiler)dugum.veri).Ad + ((Kisiler)dugum.veri).Soyad + " ";
            dugumlerListesi.Add(tekdugum);
        }
예제 #2
0
 private void PostOrderInt(İkiliAramaAgacDugumu dugum)
 {
     if (dugum == null)
     {
         return;
     }
     PostOrderInt(dugum.sol);
     PostOrderInt(dugum.sag);
     Ziyaret(dugum);
 }
예제 #3
0
        private int ElamanSayisiBulma(İkiliAramaAgacDugumu dugum)
        {
            int elemanSayisi = 0;

            if (dugum != null)
            {
                elemanSayisi  = 1;
                elemanSayisi += ElamanSayisiBulma(dugum.sol);
                elemanSayisi += ElamanSayisiBulma(dugum.sag);
            }
            return(elemanSayisi);
        }
예제 #4
0
 private int DerinlikBulma(İkiliAramaAgacDugumu dugum)
 {
     if (dugum == null)
     {
         return(0);
     }
     else
     {
         int solDerinlik = solDerinlik = DerinlikBulma(dugum.sol);
         int sagDerinlik = sagDerinlik = DerinlikBulma(dugum.sag);
         if (solDerinlik > sagDerinlik)
         {
             return(solDerinlik + 1);
         }
         else
         {
             return(sagDerinlik + 1);
         }
     }
 }
예제 #5
0
 private İkiliAramaAgacDugumu AraInt(İkiliAramaAgacDugumu dugum,
                                     double anahtar)
 {
     if (dugum == null)
     {
         return(null);
     }
     else if (((Kisiler)dugum.veri).TCKimlik == anahtar)
     {
         return(dugum);
     }
     else if (((Kisiler)dugum.veri).TCKimlik > anahtar)
     {
         return(AraInt(dugum.sol, anahtar));
     }
     else
     {
         return(AraInt(dugum.sag, anahtar));
     }
 }
예제 #6
0
        public void Ekle(Kisiler deger)
        {
            //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.TCKimlik == ((Kisiler)tempSearch.veri).TCKimlik)
                {
                    return;
                }
                else if (deger.TCKimlik < ((Kisiler)tempSearch.veri).TCKimlik)
                {
                    tempSearch = tempSearch.sol;
                }
                else
                {
                    tempSearch = tempSearch.sag;
                }
            }
            İkiliAramaAgacDugumu eklenecek = new İkiliAramaAgacDugumu(deger);

            //Ağaç boş, köke ekle
            if (kok == null)
            {
                kok = eklenecek;
            }
            else if (deger.TCKimlik < ((Kisiler)tempParent.veri).TCKimlik)
            {
                tempParent.sol = eklenecek;
            }
            else
            {
                tempParent.sag = eklenecek;
            }
        }
예제 #7
0
        private İkiliAramaAgacDugumu Successor(İkiliAramaAgacDugumu silDugum)
        {
            İkiliAramaAgacDugumu successorParent = silDugum;
            İkiliAramaAgacDugumu successor       = silDugum.sag;
            İkiliAramaAgacDugumu current         = silDugum.sag;

            while (!(current.sol == null))
            {
                successorParent = current;
                successor       = current.sol;
                current         = current.sol;
            }
            if (!(successor == silDugum.sag))
            {
                successorParent.sol = successor.sag;
            }
            else
            {
                successorParent.sag = successor.sag;
            }
            return(successor);
        }
예제 #8
0
        public bool Sil(double deger)
        {
            İkiliAramaAgacDugumu current = kok;
            İkiliAramaAgacDugumu parent  = kok;
            bool issol = true;

            //DÜĞÜMÜ BUL
            while (((Kisiler)current.veri).TCKimlik != deger)
            {
                parent = current;
                if (deger < ((Kisiler)current.veri).TCKimlik)
                {
                    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 (current == kok)
                {
                    kok = null;
                }
                else if (issol == true)
                {
                    parent.sol = null;
                }
                else
                {
                    parent.sag = null;
                }
            }
            //DURUM 2: TEK ÇOCUKLU DÜĞÜM
            else if (current.sag == null)
            {
                if (current == kok)
                {
                    kok = current.sol;
                }
                else if (issol)
                {
                    parent.sol = current.sol;
                }
                else
                {
                    parent.sag = current.sag;
                }
            }
            else if (current.sol == null)
            {
                if (current == kok)
                {
                    kok = current.sag;
                }
                else if (issol)
                {
                    parent.sol = current.sol;
                }
                else
                {
                    parent.sag = current.sag;
                }
            }
            //DURUM 3: İKİ ÇOCUKLU DÜĞÜM
            else
            {
                İkiliAramaAgacDugumu successor = Successor(current);
                if (current == kok)
                {
                    successor.sol = kok.sol;
                    successor.sag = kok.sag;
                    kok           = successor;
                }
                else if (issol)
                {
                    successor.sol = current.sol;
                    successor.sag = current.sag;
                    parent.sol    = successor;
                }
                else
                {
                    successor.sol = current.sol;
                    successor.sag = current.sag;
                    parent.sag    = successor;
                }
            }
            return(true);
        }
예제 #9
0
 public İkiliAramaAgaci(İkiliAramaAgacDugumu kok)
 {
     this.kok = kok;
 }
예제 #10
0
 public İkiliAramaAgacDugumu(object veri)
 {
     this.veri = veri;
     sol       = null;
     sag       = null;
 }