static void Main(string[] args)
        {
            //declrations
            BinaryTree tree   = new BinaryTree();
            int        choice = -1;

            // end of declarations

            // initialize data structures


            do
            {
                // display user menu
                Console.WriteLine();
                Console.WriteLine("Please enter your choice:");
                Console.WriteLine("0. Press O to exit");
                Console.WriteLine("1. Create a new Tree");
                Console.WriteLine("2. Add new nodes to Tree");
                Console.WriteLine("3. Print Tree in Inorder");
                Console.WriteLine("4. Print Tree in Preorder");
                Console.WriteLine("5. Print Size of Tree");
                Console.WriteLine("6. Print Depth of Tree");
                Console.WriteLine("7. Print Tree");
                Console.WriteLine("8. Print a Graph DFS");
                Console.WriteLine("9. Print a Graph BFS");
                Console.WriteLine("10. Check for Palindrome");
                // get user choice
                try
                {
                    choice = Int32.Parse((Console.ReadLine()));
                }

                catch (System.FormatException)
                {
                    choice = -1;
                    Console.WriteLine("Error!");
                }

                // process user choice
                switch (choice)
                {
                case 0:
                    Console.WriteLine("Goodbye...");
                    break;

                case 1:
                    tree.CreateTree();
                    break;

                case 2:
                    Console.WriteLine("What is the value of new Node?");
                    int  i       = Int32.Parse(Console.ReadLine());
                    Node newnode = new Node(i);
                    tree.InsertNode(newnode);
                    //tree.InsertNode(b);
                    break;

                case 3:
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("Inorder Traversal for the tree is:");
                    tree.PrintInorder();
                    Console.ResetColor();
                    break;

                case 4:
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("Preorder Traversal for the trees is:");
                    tree.PrintPreorder();
                    Console.ResetColor();
                    break;

                case 5:
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("Size of Tree is {0}", tree.size());
                    Console.ResetColor();
                    break;

                case 6:
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("Depth of the Tree is {0}", tree.depth());
                    Console.ResetColor();
                    break;

                case 7:
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Printing the Tree");
                    tree.PrintTree();
                    Console.ResetColor();
                    break;

                case 8:
                    //Console.BackgroundColor = ConsoleColor.Cyan;
                    Console.ForegroundColor = ConsoleColor.Cyan;

                    Graph g = CreateGraph();
                    PrintGraphDFS(g, 0);
                    Console.ResetColor();
                    break;

                case 9:
                    //Console.BackgroundColor = ConsoleColor.Cyan;
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    g = CreateGraph();
                    PrintGraphBFS(g, 0);
                    Console.ResetColor();
                    break;

                case 10:
                    Console.ForegroundColor = ConsoleColor.Cyan;
                    Console.WriteLine("Please enter the string to check: ");
                    string str = Console.ReadLine();
                    Console.WriteLine(IsPalindrome(str.Trim()));
                    Console.ResetColor();
                    break;

                default:
                    Console.WriteLine("Invalid selection, please try again..");
                    break;
                }
            } while (choice != 0);
        }
        static void TestBinaryTree()
        {
            var tree = new BinaryTree();

            tree.Insert(7);
            tree.Insert(4);
            tree.Insert(9);
            tree.Insert(1);
            tree.Insert(6);
            tree.Insert(8);
            tree.Insert(10);

            var tree2 = new BinaryTree();

            tree2.Insert(7);
            tree2.Insert(4);
            tree2.Insert(9);
            tree2.Insert(1);
            tree2.Insert(6);
            tree2.Insert(8);
            tree2.Insert(10);

            //Console.WriteLine(tree.Find(6));
            //Console.WriteLine(tree.Find(3));

            //tree.TraversePreOrder();
            //tree.TraverseInOrder();
            //tree.TraversePostOrder();

            Console.WriteLine("Tree Height: {0}", tree.Height());
            Console.WriteLine("Tree Min Value: {0}", tree.Min());

            Console.WriteLine("Binary Search Tree Min Value: {0}", tree.MinFromBST());
            Console.WriteLine("Binary Search Tree Max Value: {0}", tree.MaxFromBST());

            Console.WriteLine("Are Equals: {0}", tree.Equals(tree2));

            //tree.SwapRoot();
            Console.WriteLine("Is Binary Search Tree: {0}", tree.IsBinarySearchTree());

            //var nodes = tree.GetNodesAtDistance(2);
            //foreach (var node in nodes)
            //    Console.WriteLine(node);

            tree.TraverseBreadthFirst();
            tree.TraverseLevelOrder();

            Console.WriteLine("Size: {0}", tree.Size());

            Console.WriteLine("Leaves: {0}", tree.CountLeaves());

            Console.WriteLine("Max: {0}", tree.Max());

            Console.WriteLine("Contains 6: {0}", tree.Contains(6));
            Console.WriteLine("Contains 11: {0}", tree.Contains(11));

            Console.WriteLine("Are Sibling: {0}", tree.AreSibling(4, 9));
            Console.WriteLine("Are Sibling: {0}", tree.AreSibling(1, 10));

            var ancestors = tree.GetAncestors(4);

            foreach (var ancestor in ancestors)
            {
                Console.WriteLine("Ancestor of 4: {0}", ancestor);
            }


            var ancestors1 = tree.GetAncestors(1);

            foreach (var ancestor in ancestors1)
            {
                Console.WriteLine("Ancestor of 1: {0}", ancestor);
            }

            var ancestors2 = tree.GetAncestors(10);

            foreach (var ancestor in ancestors2)
            {
                Console.WriteLine("Ancestor of 10: {0}", ancestor);
            }

            Console.WriteLine("Is Balanced: {0}", tree.IsBalanced());
        }
Exemple #3
0
        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("\n\t1.Linked List\n\t2.Stack Array\n\t3.Stack Linked List\n\t4.Postfix\n\t5.Infix to Postfix");
                Console.Write("\n\t6.Hash Table\n\t7.Binary Tree\n\t8.Sorting\n\t9.Threaded Binary Tree\n\t10.Binary Tree");
                Console.Write("\n\t11.Heap\n\t0:Exit\nEnter Choice: ");
                var input = Console.ReadLine();
                switch (input)
                {
                case "1":
                    MyLinkedList <object> .Demo();

                    break;

                case "2":
                    StackArray <int> .Demo();

                    break;

                case "3":
                    StackLinkList <object> .Demo();

                    break;

                case "4":
                    Postfix.Demo();
                    break;

                case "5":
                    Postfix.InfixToPostfix();
                    break;

                case "6":
                    HashTable.Demo();
                    break;

                case "7":
                    BST.Demo();
                    break;

                case "8":
                    Sorting.Demo();
                    break;

                case "9":
                    ThreadedBinaryTree.Demo();
                    break;

                case "10":
                    BinaryTree.Demo();
                    break;

                case "11":
                    Heap.Demo();
                    break;

                case "0":
                    return;
                }
            }
        }
Exemple #4
0
 /// <summary>Constructs a binary tree</summary>
 /// <param name="value">the value of the tree node</param>
 /// <param name="leftChild">the left child of the tree</param>
 /// <param name="rightChild">the right child of the tree
 /// </param>
 public BinaryTree(T value, BinaryTree <T> leftChild, BinaryTree <T> rightChild)
 {
     Value      = value;
     LeftChild  = leftChild;
     RightChild = rightChild;
 }