private static void yeniIlanEkle(ArrayList kategorilerArrayList)
        {
            string sirketAdi, kategoriAdi; Ilan yeniIlan = new Ilan();

            Console.WriteLine("\nLutfen ilan kategorisini giriniz:");
            kategoriAdi = kategoriSec(kategorilerArrayList);
            Console.WriteLine("Lutfen sirket adi giriniz:");
            sirketAdi = Console.ReadLine(); yeniIlan.sirketAdi = sirketAdi;
            Console.WriteLine("Lutfen is tanimini giriniz:");
            yeniIlan.isTanimi = Console.ReadLine();
            Console.WriteLine("Lutfen yetenek ve uzmanliklari giriniz:");
            yeniIlan.yetenek = Console.ReadLine();
            Console.WriteLine("Lutfen aday tanimini giriniz:");
            yeniIlan.adayTanimi = Console.ReadLine();
            Console.WriteLine("Lutfen pozisyon bilgilerini giriniz:");
            yeniIlan.pozisyonBilgileri = Console.ReadLine();
            Console.WriteLine("Lutfen ucreti giriniz:");                                             // Ilani veren sirket daha onceden ilan verdiyse ayni sirkete ilan bilgileri eklenir, yoksa yeni bir dugum olusturulur.
            yeniIlan.ucret = int.Parse(Console.ReadLine());
            foreach (Kategori o in kategorilerArrayList)
            {
                if (string.Compare(kategoriAdi, o.kategoriAdi, true) == 0)
                {
                    if (o.agac.bul(o.agac.getRoot(), sirketAdi) == 1)
                    {
                        o.agac.bul2(o.agac.getRoot(), sirketAdi).sirketNode.ilanlar.Add(yeniIlan);
                    }
                    else if (o.agac.bul(o.agac.getRoot(), sirketAdi) != 1)
                    {
                        Sirket yeniSirket = new Sirket();
                        yeniSirket.sirketAdi = sirketAdi;
                        yeniSirket.ilanlar.Add(yeniIlan);
                        o.agac.insert(yeniSirket);
                    }
                }
            }
            for (int i = 0; i < kategorilerArrayList.Count; i++)
            {
                ((Kategori)kategorilerArrayList[i]).agac.dugumleriDiziyeTasi(((Kategori)kategorilerArrayList[i]).agac.getRoot());
                TreeNode[] yeniDugumler = ((Kategori)kategorilerArrayList[i]).agac.dugumlerDizi;
                if (((Kategori)kategorilerArrayList[i]).agac.dugumSayisiBul(((Kategori)kategorilerArrayList[i]).agac.getRoot()) == 0)
                {
                    continue;
                }
                Tree yeniAgac = new Tree();
                yeniAgac.balanceRecursive(0, ((Kategori)kategorilerArrayList[i]).agac.dugumlerDizi.Length, yeniDugumler);
                ((Kategori)kategorilerArrayList[i]).agac = yeniAgac;
            }
            Console.WriteLine("\nIlan eklendi.");
        }
        private static void baslangicKategoriOlustur(ArrayList kategorilerArrayList)
        {
            StreamReader dosyaOku; Sirket yeniSirket; Ilan yeniIlan; TreeNode node = new TreeNode();
            string       yazi, kategoriAdi, sirketAdi; int ilanSayisi = 6;

            string[] baslangictakiKategoriler = { "Yazilim Muhendisi", "Ag Yoneticisi", "Veritabani Yoneticisi", "Mobil Yazilim Gelistirme Uzmani", "Backend Developer", "Web Developer" };

            for (int i = 0; i < baslangictakiKategoriler.Length; i++)
            {
                Kategori kategori = new Kategori(baslangictakiKategoriler[i]);
                kategorilerArrayList.Add(kategori);
            }
            dosyaOku = File.OpenText("C:/Users/Pc/Desktop/Veriler.dat");
            yazi     = dosyaOku.ReadLine();
            for (int i = 1; i <= ilanSayisi; i++)
            {
                yeniSirket                 = new Sirket(); yeniIlan = new Ilan();       // Programda ornek olarak kullanilacak olan veriler dosyadan okunur.
                kategoriAdi                = yazi; yazi = dosyaOku.ReadLine();
                yeniSirket.sirketAdi       = yazi; yeniIlan.sirketAdi = yazi; sirketAdi = yazi; yazi = dosyaOku.ReadLine();
                yeniIlan.isTanimi          = yazi; yazi = dosyaOku.ReadLine();
                yeniIlan.yetenek           = yazi; yeniIlan.yetenek = yeniIlan.yetenek.Insert(yeniIlan.yetenek.Length, " "); yazi = dosyaOku.ReadLine();
                yeniIlan.adayTanimi        = yazi; yazi = dosyaOku.ReadLine();
                yeniIlan.pozisyonBilgileri = yazi; yazi = dosyaOku.ReadLine();
                yeniIlan.ucret             = Convert.ToInt32(yazi); yazi = dosyaOku.ReadLine();
                if (i != 6)
                {
                    yeniSirket.ilanlar.Add(yeniIlan);
                }
                foreach (Kategori o in kategorilerArrayList)
                {
                    if (string.Compare(kategoriAdi, o.kategoriAdi, true) == 0)
                    {
                        if (i != 6)
                        {
                            o.agac.insert(yeniSirket);
                        }
                    }
                }
                if (i == 6)
                {
                    ((Kategori)kategorilerArrayList[0]).agac.bul2(((Kategori)kategorilerArrayList[0]).agac.getRoot(), sirketAdi).sirketNode.ilanlar.Add(yeniIlan);
                }
            }
            dosyaOku.Close();
        }
        public void insert(Sirket yeniSirket)
        {
            TreeNode newNode = new TreeNode();

            newNode.sirketNode = yeniSirket;
            if (root == null)
            {
                root = newNode;
            }
            else
            {
                TreeNode current = root;
                TreeNode parent;
                while (true)
                {
                    parent = current;
                    if (string.Compare(yeniSirket.sirketAdi, current.sirketNode.sirketAdi, true) == -1)
                    {
                        current = current.leftChild;
                        if (current == null)
                        {
                            parent.leftChild = newNode;
                            return;
                        }
                    }
                    else
                    {
                        current = current.rightChild;
                        if (current == null)
                        {
                            parent.rightChild = newNode;
                            return;
                        }
                    }
                }
            }
        }