Exemple #1
0
        static void Main(string[] args)
        {
            int[] datas = { 23, 45, 16, 37, 3, 99, 22 };

            var bst = new BST();
            //foreach (var data in datas)
            //{
            //    bst.BuildBST(data);
            //}

            //var bstRoot = bst.Root;
            var bstRoot = bst.BuildBST(datas);

            Console.WriteLine("中序遍历:");
            bst.InOrder(bstRoot);

            Console.WriteLine("\r\n先序遍历:");
            bst.PreOrder(bstRoot);

            Console.WriteLine("\r\n后序遍历:");
            bst.PostOrder(bstRoot);

            Console.WriteLine("\r\n最小值:");
            Console.Write(bst.FindMin());

            Console.WriteLine("\r\n最小值节点:");
            Console.Write(bst.FindMinNode());

            Console.WriteLine("\r\n最大值:");
            Console.Write(bst.FindMax());

            Console.WriteLine("\r\n最大值节点:");
            Console.Write(bst.FindMaxNode());

            Console.WriteLine("\r\n查找指定值:");
            Console.Write(bst.FindNode(45));

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            BST bst = new BST();

            //Min-Max Değerler, Ataları ve Kardeşleri, Level Order Yazma

            /*
             * bst.ekle(20);
             * bst.levelOrder();
             * bst.min();
             * bst.max();
             * Console.WriteLine();
             *
             * bst.ekle(10);
             * bst.levelOrder();
             * bst.min();
             * bst.max();
             * Console.WriteLine();
             *
             * bst.ekle(30);
             * bst.levelOrder();
             * bst.min();
             * bst.max();
             * Console.WriteLine();
             *
             * bst.ekle(5);
             * bst.ekle(2);
             * bst.ekle(3);
             * bst.ekle(1);
             * bst.ekle(35);
             * bst.ekle(37);
             * bst.ekle(36);
             * bst.ekle(38);
             * bst.levelOrder();
             * bst.min();
             * bst.max();
             */

            //Sadece Kök Düğümü Olan Bir Ağaçtan Olmayan Bir Değer ve Kökü Silme İşlemi

            /*
             * bst.ekle(17);
             * bst.levelOrder();
             * Console.WriteLine();
             *
             * bst.silme(8);
             * bst.silme(17);
             * bst.levelOrder();
             * Console.WriteLine();
             */

            //Tek Çocuğu Solda Bulunan Kökün Silinmesi

            /*
             * bst.ekle(17);
             * bst.ekle(8);
             * bst.levelOrder();
             * Console.WriteLine();
             *
             * bst.silme(17);
             * bst.levelOrder();
             */

            //Tek Çocuğu Sağda Bulunan Kökün Silinmesi

            /*
             * bst.ekle(17);
             * bst.ekle(25);
             * bst.levelOrder();
             * Console.WriteLine();
             *
             * bst.silme(17);
             * bst.levelOrder();
             */


            //İki Çocuğu Bulnan Kökün Silinmesi

            /*
             * bst.ekle(17);
             * bst.ekle(8);
             * bst.ekle(25);
             * bst.levelOrder();
             * Console.WriteLine();
             *
             * bst.silme(17);
             * bst.levelOrder();*/


            bst.ekle(17);
            bst.ekle(8);
            bst.ekle(25);
            bst.ekle(5);
            bst.ekle(2);
            bst.ekle(14);
            bst.ekle(12);
            bst.ekle(15);
            bst.ekle(20);
            bst.ekle(30);
            bst.ekle(23);
            bst.ekle(1);
            bst.levelOrder();
            Console.WriteLine();

            //Yaprak Düğümün Silinmesi
            bst.silme(23);
            bst.levelOrder();
            Console.WriteLine();

            //Tek Çocuğu Olan Düğümün Silinmesi
            bst.silme(2);
            bst.levelOrder();
            Console.WriteLine();

            //İki Çocuğu Olan Düğümün Silinmesi
            bst.silme(8);
            bst.levelOrder();
            Console.WriteLine();
        }