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()); }
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; } } }
/// <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; }