private static void RedBlackTreeDemo()
        {
            RedBlackTree tree   = new RedBlackTree();
            int          choice = 1;

            do
            {
                Console.Clear();
                Console.WriteLine("1.Display the Tree\n2.Insert a node\n3.Delete a node\n4.Search a node\n5.Find Number of elements\n6.Find Height of the tree\n7.InOrderTraverse" +
                                  "\n8.PreOrderTraverse\n9.PostOrderTraverse\n10.LevelOrderTraverse\n11.Exit\nPlease enter a choice");
                choice = Convert.ToInt32(Console.ReadLine());
                switch (choice)
                {
                case 1:
                    tree.display(tree.Root, 1);
                    Console.ReadKey();
                    break;

                case 2:
                    Console.WriteLine("Enter the element to add\n");
                    int  value  = Convert.ToInt32(Console.ReadLine());
                    bool result = tree.Insert(ref tree.Root, value);
                    if (result)
                    {
                        Console.WriteLine("Added successfully");
                    }
                    else
                    {
                        Console.WriteLine("Could not add the element");
                    }
                    Console.ReadKey();
                    break;

                case 3:
                    Console.WriteLine("Enter the element to delete\n");
                    int  valueToDelete = Convert.ToInt32(Console.ReadLine());
                    bool delResult     = tree.Delete(ref tree.Root, valueToDelete);
                    if (delResult)
                    {
                        Console.WriteLine("Deleted successfully");
                    }
                    else
                    {
                        Console.WriteLine("Could not delete the element");
                    }
                    Console.ReadKey();
                    break;

                case 4:
                    Console.WriteLine("Enter the element to search\n");
                    int  valueToSearch = Convert.ToInt32(Console.ReadLine());
                    bool searchResult  = tree.Search(ref tree.Root, valueToSearch);
                    if (searchResult)
                    {
                        Console.WriteLine("The element exists");
                    }
                    else
                    {
                        Console.WriteLine("The element doesn't exists");
                    }
                    Console.ReadKey();
                    break;

                case 5:
                    int numberOfElements = tree.FindNumberOfElements(ref tree.Root);
                    Console.WriteLine("The total number of elements in the tree is " + numberOfElements);
                    Console.ReadKey();
                    break;

                case 6:
                    int heightOfTree = tree.FindHeightOfTree(ref tree.Root);
                    Console.WriteLine("The total height of the tree is " + heightOfTree);
                    Console.ReadKey();
                    break;

                case 7:
                    tree.InOrderTraverse(tree.Root);
                    Console.ReadKey();
                    break;

                case 8:
                    tree.PreOrderTraverse(tree.Root);
                    Console.ReadKey();
                    break;

                case 9:
                    tree.PostOrderTraverse(tree.Root);
                    Console.ReadKey();
                    break;

                case 10:
                    tree.LevelOrderTraverse(tree.Root);
                    Console.ReadKey();
                    break;

                case 11:
                    break;

                default:
                    Console.WriteLine("Please enter a valid choice");
                    Console.ReadKey();
                    break;
                }
            } while (choice != 11);
        }