예제 #1
0
 public void PostOrderVisit(KategoriBSTDugum dugum)
 {
     if (dugum == null)
     {
         return;
     }
     PostOrderVisit(dugum.SolDugum);
     PostOrderVisit(dugum.SagDugum);
     Ziyaret(dugum);
 }
예제 #2
0
        public void Ekle(string UrunTipi, Urun urun)
        {
            bool             flag       = false;
            KategoriBSTDugum tempParent = new KategoriBSTDugum();
            //Kökten başla ve ilerle
            KategoriBSTDugum tempSearch = kok;

            while (tempSearch != null)
            {
                tempParent = tempSearch;
                //Deger zaten var, çık.

                if (String.Compare(tempSearch.Data.UrunTipi, UrunTipi, true) == 0)
                {
                    break;
                }

                else if (String.Compare(tempSearch.Data.UrunTipi, UrunTipi, true) == 1)
                {
                    flag       = true;
                    tempSearch = tempSearch.SolDugum;
                }

                else if (String.Compare(tempSearch.Data.UrunTipi, UrunTipi, true) == -1)
                {
                    flag       = true;
                    tempSearch = tempSearch.SagDugum;
                }
            }

            Kategori         ktgr     = new Kategori(UrunTipi);
            KategoriBSTDugum category = new KategoriBSTDugum(ktgr);

            kok = category;
            ktgr.Ekle(urun);

            if (tempSearch == null)
            {
                Kategori kategori = new Kategori(UrunTipi);
                kategori.Ekle(urun);
                if (flag)
                {
                    tempParent.SolDugum = new KategoriBSTDugum(kategori);
                }
                else
                {
                    tempParent.SagDugum = new KategoriBSTDugum(kategori);
                }
            }
            else
            {
                tempSearch.Data.Ekle(urun);
            }
        }
예제 #3
0
        public Kategori YuksekDegerliUrun()
        {
            KategoriBSTDugum tempRight = kok;

            while (tempRight.SagDugum != null)
            {
                tempRight = tempRight.SagDugum;
            }

            return(tempRight.Data);
        }
예제 #4
0
        public Kategori DüsükDegerliUrun()
        {
            KategoriBSTDugum tempLeft = kok;

            while (tempLeft.SolDugum != null)
            {
                tempLeft = tempLeft.SolDugum;
            }

            return(tempLeft.Data);
        }
예제 #5
0
        public int Urunsayisi(KategoriBSTDugum node)
        {
            int count = 0;

            if (node != null)
            {
                count  = 1;
                count += Urunsayisi(node.SolDugum);
                count += Urunsayisi(node.SagDugum);
            }
            return(count);
        }
예제 #6
0
        private void Ziyaret(KategoriBSTDugum dugum)
        {
            duzeyCount++;
            int kalan = duzeyCount % 2;
            int bolum = duzeyCount / 2;

            if (kalan == 0 && bolum % 2 == 0)
            {
                duzey += 1;
            }
            liste.Add(new UrunListe()
            {
                duzey = duzey, urunler = dugum.Data.Urunler
            });
        }
예제 #7
0
        public int YaprakSayisi(KategoriBSTDugum dugum)
        {
            int count = 0;

            if (dugum != null)
            {
                if (dugum.SolDugum == null && dugum.SagDugum == null)
                {
                    count = 1;
                }
                else
                {
                    count = YaprakSayisi(dugum.SolDugum) + YaprakSayisi(dugum.SagDugum);
                }
            }
            return(count);
        }
예제 #8
0
 public KategoriBSTDugum KategoriAra(KategoriBSTDugum dugum, string anahtar)
 {
     if (dugum == null)
     {
         return(null);
     }
     else if (String.Compare(dugum.Data.UrunTipi, anahtar, true) == 0)
     {
         return(dugum);
     }
     else if (String.Compare(dugum.Data.UrunTipi, anahtar, true) == 1)
     {
         return(KategoriAra(dugum.SolDugum, anahtar));
     }
     else
     {
         return(KategoriAra(dugum.SolDugum, anahtar));
     }
 }
예제 #9
0
        public Urun Sil(string Aciklama, KategoriBSTDugum dugum)
        {
            if (dugum == null)
            {
                return(null);
            }


            for (int i = 0; i < dugum.Data.Urunler.Count; i++)
            {
                if (dugum.Data.Urunler[i].Aciklama == Aciklama)
                {
                    Urun temp = dugum.Data.Urunler[i];
                    dugum.Data.Urunler.RemoveAt(i);
                    return(temp);
                }
            }

            Urun temp1 = Sil(Aciklama, dugum.SolDugum) ?? Sil(Aciklama, dugum.SagDugum);

            return(temp1);
        }
예제 #10
0
 public KategoriBSTDugum(Kategori Data)
 {
     SolDugum  = null;
     SagDugum  = null;
     this.Data = Data;
 }
예제 #11
0
 public KategoriBSTDugum()
 {
     SolDugum  = null;
     SagDugum  = null;
     this.Data = null;
 }