示例#1
0
文件: Program.cs 项目: krilek/BTree
        static void Main(string[] args)
        {
            Random r = new Random();

            //Random r = new Random();
            List <int> used = new List <int>();
            var        tree = new BTree(3);

            for (int i = 0; i < 50; i++)
            {
                int newVal;
                do
                {
                    newVal = r.Next(0, 50);
                } while (used.Contains(newVal));
                used.Add(newVal);
                tree.Insert(newVal);
                //Console.WriteLine(tree);
                //tree.Print(tree.Root, 0);
                //Console.WriteLine($"-------{i}------- Dodano: {newVal}");
            }
            Console.WriteLine("Before saving to file.");
            Console.WriteLine(tree);
            BTree.WriteToBinaryFile <BTree>("xd", tree);
            var tree2 = BTree.ReadFromBinaryFile <BTree>("xd");

            Console.WriteLine("After reading from file.");
            Console.WriteLine(tree2);
            int odp;

            do
            {
                Console.WriteLine("Please select option.");
                Console.WriteLine("1. Add element, 2. Remove element, 3.Print tree, 4. Exit.");
                odp = Int32.Parse(Console.ReadLine());
                switch (odp)
                {
                case 1:
                    try
                    {
                        Console.Write("Enter value to add: ");
                        int x = Int32.Parse(Console.ReadLine());
                        tree.Insert(x);
                    }catch (Exception e) { }

                    break;

                case 2:
                    try
                    {
                        Console.Write("Enter value to remove: ");
                        int y = Int32.Parse(Console.ReadLine());
                        tree.Delete(y);
                    }
                    catch (Exception e) { }

                    break;

                case 3:
                    Console.WriteLine(tree);
                    break;

                default:
                    return;
                }
            } while (odp != 4);
            //for (int i = 0; i < 50; i++)
            //{
            //    int val = used[i];
            //    tree.Delete(val);
            //    Console.WriteLine(tree);
            //    Console.WriteLine($"-------{i}------- Usunięto: {val}");
            //}

            Console.ReadKey();
        }
示例#2
0
        //////////////////////////////////////////////////////////


        //////////////////////////////////////////////////////////
        // Print the tree in descending order
        public static void TraverseDescending(BTree node)
        {
        }
 public void MergeTrees(BTree A, BTree B)
 {
     B.GetTree(0, 0, B.tree, A);
 }
        static void Main()
        {
            Console.SetWindowSize(150, 30);
            Random rnd            = new Random();
            BTree  treeA          = new BTree();
            BTree  treeB          = new BTree();
            BTree  treeA_NoRandom = new BTree();
            BTree  treeB_NoRandom = new BTree();
            int    countInArray   = 7;

            int[] array = new int[countInArray];

            Console.WriteLine("──────────────────────────────");
            Console.WriteLine("Входные числав в дерево A:");

            for (int k = 0; k < countInArray; k++)
            {
                int randomDigit = rnd.Next(1, 99);
                array[k] = randomDigit;
                Console.Write(randomDigit + " ");
            }

            Console.WriteLine("\n──────────────────────────────");

            for (int k = 0; k < countInArray; k++)
            {
                treeA_NoRandom.InsertNotRandom(array[k]);
                treeA.Insert(array[k]);
            }
            Console.WriteLine("Обычное бинарное дерево A:");
            treeA_NoRandom.PrintList();

            treeA.FixTree();

            Console.WriteLine("Рандомизированное бинарное дерево A:");
            treeA.PrintList();
            Console.WriteLine();

            treeA.PrintTreeRev();

            treeA.PrintCount();
            treeA.PrintLvl();

            treeA.PrintCountInsertAsRoot();
            treeA.PrintDataInsertAsRoot();

            Console.WriteLine("──────────────────────────────");
            Console.WriteLine("Входные числав в дерево B:");

            for (int k = 0; k < countInArray; k++)
            {
                int randomDigit = rnd.Next(1, 99);
                array[k] = randomDigit;
                Console.Write(randomDigit + " ");
            }

            Console.WriteLine("\n──────────────────────────────");

            for (int k = 0; k < countInArray; k++)
            {
                treeB_NoRandom.InsertNotRandom(array[k]);
                treeB.Insert(array[k]);
            }
            Console.WriteLine("Обычное бинарное дерево B:");
            treeB_NoRandom.PrintList();

            treeB.FixTree();

            Console.WriteLine("Рандомизированное бинарное дерево B:");
            treeB.PrintList();
            Console.WriteLine();

            treeB.PrintTreeStr();
            treeB.PrintTreeSim();

            treeB.PrintCount();
            treeB.PrintLvl();

            treeB.PrintCountInsertAsRoot();
            treeB.PrintDataInsertAsRoot();

            treeA.MergeTrees(treeA, treeB);

            treeA.FixTree();

            Console.WriteLine("Элементы дерева B добавлены в дерево A:");
            treeA.PrintList();
            Console.WriteLine();

            treeA.PrintTreeRev();

            treeA.PrintCount();
            treeA.PrintLvl();

            treeA.PrintCountInsertAsRoot();
            treeA.PrintDataInsertAsRoot();

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            BTree Btree = new BTree();
            bool  flag  = true;

            while (flag)
            {
                Console.Clear();
                Console.WriteLine("Demo: BTree of Integer");
                Console.WriteLine("--------------------------------");
                Console.WriteLine("1 - Insert node");
                Console.WriteLine("2 - Delete node");
                Console.WriteLine("3 - Search node");
                Console.WriteLine("4 - Traverse Tree In-Order");
                Console.WriteLine("5 - Display Tree");
                Console.WriteLine("6 - Exit");
                Console.WriteLine("--------------------------------");
                ConsoleKeyInfo cki = Console.ReadKey(true);
                switch (cki.Key)
                {
                case ConsoleKey.D1:
                    Console.WriteLine("Enter node to insert:");
                    string insertInput = Console.ReadLine();
                    if (Int32.TryParse(insertInput, out int insertNode))
                    {
                        Btree.Insert(insertNode);
                        Console.WriteLine("Node " + insertNode + " has been inserted.");
                    }
                    else
                    {
                        Console.WriteLine("Invalid input. Enter integer number");
                    }
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;

                case ConsoleKey.D2:
                    Console.WriteLine("Enter node to delete:");
                    string deleteInput = Console.ReadLine();
                    if (Int32.TryParse(deleteInput, out int deleteNode))
                    {
                        if (Btree.Search(deleteNode) == false)
                        {
                            Console.WriteLine("No such node in the tree");
                        }
                        else
                        {
                            Btree.Delete(deleteNode);
                            Console.WriteLine("Node " + deleteNode + " has been deleted.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid input. Enter integer number");
                    }
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;

                case ConsoleKey.D3:
                    Btree.PrintTree();
                    Console.WriteLine("Enter node to search:");
                    string getInput = Console.ReadLine();
                    if (Int32.TryParse(getInput, out int getNode))
                    {
                        if (Btree.Search(getNode) == true)
                        {
                            Console.WriteLine("Node " + getNode + " is present in the tree");
                        }
                        else
                        {
                            Console.WriteLine("No such node in the tree");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid input. Enter integer number");
                    }
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;

                case ConsoleKey.D4:
                    Console.WriteLine("Current tree In-Order traverse:");
                    Btree.TraverseInOrder();
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;

                case ConsoleKey.D5:
                    Console.WriteLine("Current tree(from left to right):");
                    Btree.PrintTree();
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;

                case ConsoleKey.D6:
                    flag = false;
                    break;

                default:
                    Console.WriteLine("Invalid menu item, enter numbers 1-4");
                    Console.WriteLine("\nPress any key...");
                    Console.ReadLine();
                    break;
                }
            }
        }
示例#6
0
        private void Button5_Click(object sender, EventArgs e)
        {
            // Exercise #2
            // add numbers from the test

            this.richTextBox1.Clear();

            BTree node = null;
            BTree root = null;

            root = new BTree(1, root, true);
            node = new BTree(5, root, true);
            node = new BTree(15, root, true);
            node = new BTree(20, root, true);
            node = new BTree(21, root, true);
            node = new BTree(22, root, true);
            node = new BTree(23, root, true);
            node = new BTree(24, root, true);
            node = new BTree(25, root, true);
            node = new BTree(30, root, true);
            node = new BTree(35, root, true);
            node = new BTree(37, root, true);
            node = new BTree(40, root, true);
            node = new BTree(55, root, true);
            node = new BTree(60, root, true);

            List <int> list = new List <int>();



            this.richTextBox1.Text += "\n";
            BTree.TraverseAscending(root);

            this.richTextBox1.Clear();

            node = null;
            root = null;


            list = TraverseAscendingII(root);

            VisualizeBinaryTree visualizeBinaryTree = new VisualizeBinaryTree(root);


            //this will only work if the numbers are put into the list in the order they are on the test.
            //but since the visualizer isnt working, I can't really check

            root = new BTree(list[9], root, true);
            node = new BTree(list[3], root, true);
            node = new BTree(list[11], root, true);
            node = new BTree(list[1], root, true);
            node = new BTree(list[5], root, true);
            node = new BTree(list[9], root, true);
            node = new BTree(list[13], root, true);
            node = new BTree(list[0], root, true);
            node = new BTree(list[2], root, true);
            node = new BTree(list[4], root, true);
            node = new BTree(list[6], root, true);
            node = new BTree(list[8], root, true);
            node = new BTree(list[10], root, true);
            node = new BTree(list[12], root, true);
            node = new BTree(list[14], root, true);

            //do whatever with the visualizer
            visualizeBinaryTree = new VisualizeBinaryTree(root);
            BTree.TraverseAscending(root);
        }
示例#7
0
 public BTreeSet(BTree <T> bTree)
 {
     _bTree = bTree;
 }
示例#8
0
        private void Exercise5__Click(object sender, EventArgs e)
        {
            // Exercise #5
            // use the code in Button3_Click to add the 26 letters to the tree
            // then remove nodes "C", "I" and "A"
            // using this code to remove each node:
            //     // create new freestanding node for "C"
            //     nodeToDelete = new BTree("C", null);
            //     BTree.DeleteNode(nodeToDelete, root);
            // add the newline and call BTree.TraverseAscending() after each delete

            this.richTextBox.Clear();

            BTree node         = null;
            BTree nodeToDelete = null;
            BTree root         = null;

            // Your code here
            //add 26 letters to tree

            node = new BTree("M", null);
            root = node;

            node = new BTree("F", root);
            node = new BTree("C", root);
            node = new BTree("B", root);
            node = new BTree("A", root);
            node = new BTree("E", root);
            node = new BTree("D", root);

            node = new BTree("J", root);
            node = new BTree("I", root);
            node = new BTree("H", root);
            node = new BTree("G", root);
            node = new BTree("L", root);
            node = new BTree("K", root);

            node = new BTree("P", root);
            node = new BTree("O", root);
            node = new BTree("N", root);
            node = new BTree("T", root);
            node = new BTree("S", root);
            node = new BTree("R", root);
            node = new BTree("Q", root);

            node = new BTree("W", root);
            node = new BTree("V", root);
            node = new BTree("U", root);
            node = new BTree("X", root);
            node = new BTree("Y", root);
            node = new BTree("Z", root);

            //remove C, I, and A
            nodeToDelete = new BTree("C", null);
            BTree.DeleteNode(nodeToDelete, root);
            //new line and traverse ascending
            this.richTextBox.Text += "\n";
            BTree.TraverseAscending(root);

            //delete i
            nodeToDelete = new BTree("I", null);
            BTree.DeleteNode(nodeToDelete, root);
            //new line and traverse ascending
            this.richTextBox.Text += "\n";
            BTree.TraverseAscending(root);

            //delete a
            nodeToDelete = new BTree("A", null);
            BTree.DeleteNode(nodeToDelete, root);
            //new line and traverse ascending
            this.richTextBox.Text += "\n";
            BTree.TraverseAscending(root);


            this.richTextBox.Text += "\n";
            BTree.TraverseAscending(root);

            VisualizeBinaryTree visualizeBinaryTree = new VisualizeBinaryTree(root);
        }
示例#9
0
        private void Exercise4__Click(object sender, EventArgs e)
        {
            // Exercise #4
            // prime the tree using the code in Button3_Click()
            // then insert the 15 random uppercase strings from Exercise #3

            this.richTextBox.Clear();

            BTree node = null;
            BTree root = null;

            // Your code here
            //code from button 3

            node = new BTree("M", null);
            root = node;
            Random random = new Random();

            node = new BTree("F", root);
            node = new BTree("C", root);
            node = new BTree("B", root);
            node = new BTree("A", root);
            node = new BTree("E", root);
            node = new BTree("D", root);

            node = new BTree("J", root);
            node = new BTree("I", root);
            node = new BTree("H", root);
            node = new BTree("G", root);
            node = new BTree("L", root);
            node = new BTree("K", root);

            node = new BTree("P", root);
            node = new BTree("O", root);
            node = new BTree("N", root);
            node = new BTree("T", root);
            node = new BTree("S", root);
            node = new BTree("R", root);
            node = new BTree("Q", root);

            node = new BTree("W", root);
            node = new BTree("V", root);
            node = new BTree("U", root);
            node = new BTree("X", root);
            node = new BTree("Y", root);
            node = new BTree("Z", root);

            //insert 15 random strings
            node = new BTree("Hi", root);
            node = new BTree("Cake", root);
            node = new BTree("My name is Victoria", root);
            node = new BTree("Spongebob squarepants", root);
            node = new BTree("pinapple", root);
            node = new BTree("Victoria", root);
            node = new BTree("Umbrella", root);
            node = new BTree("Cats are cool", root);
            node = new BTree("yellow", root);
            node = new BTree("Zebras have stripes", root);
            node = new BTree("I need coffee", root);
            node = new BTree("Suit and tie", root);
            node = new BTree("Rainbow", root);
            node = new BTree("Yo-yo", root);
            node = new BTree("Roots of a tree", root);

            //insert 30 numbers b/w 1 and 51
            for (int i = 0; i < 30; i++)
            {
                //numbers between 1 and 51
                node = new BTree(random.Next(1, 51), root);
            }

            this.richTextBox.Text += "\n";
            BTree.TraverseAscending(root);

            this.richTextBox.Text += "\n";
            BTree.TraverseDescending(root);

            VisualizeBinaryTree visualizeBinaryTree = new VisualizeBinaryTree(root);
        }