public void ekle(int x)
        {
            BST_Node nn = null;
            BST_Node n  = root;

            while (n != null)
            {
                nn = n;

                if (x == n.data)
                {
                    return;
                }

                else if (x < n.data)
                {
                    n = n.left;
                }

                else
                {
                    n = n.right;
                }
            }

            BST_Node node = new BST_Node();

            node.data = x;
            node.left = node.right = null;

            if (root == null)
            {
                root = node;
            }

            else if (x < nn.data)
            {
                nn.left = node;
            }

            else
            {
                nn.right = node;
            }
        }
        public void levelBul(BST_Node root, int level)
        {
            if (root == null)
            {
                return;
            }

            if (level == 1)
            {
                Console.Write(root.data + " ");
            }

            else if (level > 1)
            {
                levelBul(root.left, level - 1);
                levelBul(root.right, level - 1);
            }
        }
        public int yukseklik(BST_Node root)
        {
            if (root == null)
            {
                return(0);
            }

            else
            {
                int lheight = yukseklik(root.left);
                int rheight = yukseklik(root.right);

                if (lheight > rheight)
                {
                    return(lheight + 1);
                }

                return(rheight + 1);
            }
        }
        public BST_Node arama(int x)
        {
            BST_Node n = root;

            while (n != null)
            {
                if (x == n.data)
                {
                    return(n);
                }

                else if (x < n.data)
                {
                    n = n.left;
                }

                else
                {
                    n = n.right;
                }
            }

            return(null);
        }
        public BST_Node min()
        {
            if (root == null)
            {
                Console.WriteLine("Ağaç boş...");
                return(null);
            }

            if (root.left == null)
            {
                Console.WriteLine("Minimum değer: " + root.data);
                Console.WriteLine("Atası: Yok");
                Console.WriteLine("Kardeşi: Yok");
                return(root);
            }

            if (root.left.left == null)
            {
                Console.WriteLine("Minimum değer: " + root.left.data);
                Console.WriteLine("Atası: Yok");
                Console.Write("Kardeşi: ");
                if (root.right == null)
                {
                    Console.WriteLine("Yok");
                }

                else
                {
                    Console.WriteLine(root.right.data);
                }

                return(root.left);
            }

            BST_Node  n   = root;
            ArrayList ata = new ArrayList();

            while (n.left.left != null)
            {
                ata.Add(n.data);
                n = n.left;
            }

            Console.WriteLine("Minimum değer: " + n.left.data);
            Console.Write("Atası: ");

            foreach (int i in ata)
            {
                Console.Write(i + " ");
            }

            Console.Write("\nKardeşi: ");
            if (n.right == null)
            {
                Console.WriteLine("Yok");
            }
            else
            {
                Console.WriteLine(n.right.data);
            }

            return(n.left);
        }
        public void silme(int x)
        {
            if (root == null)
            {
                Console.WriteLine("Hata...\nAğaç boş");
                return;
            }

            BST_Node n  = root;
            BST_Node nn = null;

            while (n.left != null || n.right != null)
            {
                nn = n;

                if (x < n.data)
                {
                    n = n.left;
                }

                else if (x > n.data)
                {
                    n = n.right;
                }

                else if (x == n.data)
                {
                    break;
                }
            }

            if (n.data != x)
            {
                Console.WriteLine(x + " değeri bulunamadı...");
                return;
            }

            if (n.left == null && n.right == null)
            {
                if (x == root.data)
                {
                    root = null;
                    Console.WriteLine(x + " değeri silindi");
                    return;
                }

                if (nn.left == n)
                {
                    nn.left = null;
                }

                else if (nn.right == n)
                {
                    nn.right = null;
                }

                return;
            }

            if (n.left == null && n.right != null)
            {
                if (x == root.data)
                {
                    BST_Node rmin = root.right;

                    if (rmin.right == null)
                    {
                        n.data  = rmin.data;
                        n.right = rmin.right;
                        return;
                    }

                    while (rmin.left.left != null)
                    {
                        rmin = rmin.left;
                    }

                    n.data    = rmin.left.data;
                    rmin.left = null;
                    return;
                }

                n.data  = n.right.data;
                n.right = null;

                return;
            }

            if (n.left != null && n.right == null)
            {
                if (x == root.data)
                {
                    BST_Node lmax = root.left;

                    if (lmax.left == null)
                    {
                        n.data = lmax.data;
                        n.left = lmax.left;
                        return;
                    }

                    while (lmax.right.right != null)
                    {
                        lmax = lmax.right;
                    }

                    n.data     = lmax.right.data;
                    lmax.right = null;
                    return;
                }

                n.data = n.left.data;
                n.left = null;

                return;
            }

            if (n.left != null && n.right != null)
            {
                BST_Node lmax = n.left;

                if (lmax.right == null)
                {
                    n.data = lmax.data;
                    n.left = lmax.left;
                    return;
                }


                while (lmax.right.right != null)
                {
                    lmax = lmax.right;
                }

                n.data     = lmax.right.data;
                lmax.right = null;
                return;
            }
        }