Ejemplo n.º 1
0
        public void AddNode_WithKey_SmallerThan_RootKey_ShouldBe_OnLeft()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(9);
            Assert.True(tree.Root.Key == 10);
            Assert.True(tree.Root.Left.Key == 9);
        }
Ejemplo n.º 2
0
        public void AddNode_WithKey_HigherThan_RootKey_ShouldBe_OnRight()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(100);
            Assert.True(tree.Root.Key == 10);
            Assert.True(tree.Root.Right.Key == 100);
        }
Ejemplo n.º 3
0
        public void GetNode_Should_ReturnNode()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(5);
            tree.Add(7);
            tree.Add(9);
            tree.Add(20);
            tree.Add(6);
            tree.Add(1);
            tree.Add(13);
            tree.Add(53);
            tree.Add(100);
            Assert.True(tree.GetNode(13).Key == 13);
        }
Ejemplo n.º 4
0
        public void AddNode_InEmptyTree_ShouldBe_Root()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            Assert.True(tree.Root.Key == 10);
        }
Ejemplo n.º 5
0
        static void Main()
        {
            var tree = new BSTree <int>(new List <int> {
                5, 3, 7, 1, 2, 8, 6, 9, 4
            });

            tree.Add(8);
            Console.WriteLine();

            Console.WriteLine("Префиксный обход дерева");
            Print(tree.PreOrder());

            Console.WriteLine("Постфиксный обход дерева");
            Print(tree.PostOrder());

            Console.WriteLine("Инфиксный обход дерева");
            Print(tree.InOrder());

            Console.WriteLine("Бэкфиксный обход дерева");
            Print(tree.BackOrder());

            Console.WriteLine("Копирование дерева и его Бэкфиксный обход");
            var copyTree = new BSTree <int>(tree.PreOrder());

            Print(copyTree.BackOrder());
        }
Ejemplo n.º 6
0
        public void CopyToList_ShouldAdd_AddNodes_InOrder()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(5);
            tree.Add(7);
            tree.Add(9);
            tree.Add(20);
            tree.Add(6);
            tree.Add(1);
            tree.Add(13);
            tree.Add(53);
            tree.Add(100);
            List <BSTreeNode <int> > nodesList = tree.CopyToList(tree);

            Assert.True(nodesList.IndexOf(tree.GetNode(53)) == 8);
        }
Ejemplo n.º 7
0
        public void CopyToList_ShouldAdd_AllNodes()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(5);
            tree.Add(7);
            tree.Add(9);
            tree.Add(20);
            tree.Add(6);
            tree.Add(1);
            tree.Add(13);
            tree.Add(53);
            tree.Add(100);
            List <BSTreeNode <int> > nodesList = tree.CopyToList(tree);

            Assert.True(nodesList.Count == 10);
        }
Ejemplo n.º 8
0
        public void GetNonExistentKey_Should_ReturnDefault()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(5);
            tree.Add(7);
            tree.Add(9);
            tree.Add(20);
            tree.Add(6);
            tree.Add(1);
            tree.Add(13);
            tree.Add(53);
            tree.Add(100);
            var exception = Assert.Throws <KeyNotFoundException>(() => tree.GetNode(33));

            Assert.True(exception.Message == "Key not found.");
        }
Ejemplo n.º 9
0
        public void AddNodes_Tree_ShouldBe_Sorted()
        {
            BSTree <int> tree = new BSTree <int>();

            tree.Add(10);
            tree.Add(5);
            tree.Add(7);
            tree.Add(9);
            tree.Add(20);
            tree.Add(6);
            tree.Add(1);
            tree.Add(13);
            tree.Add(53);
            tree.Add(100);
            List <BSTreeNode <int> > nodeList = tree.CopyToList(tree);

            Assert.True(nodeList[5].Key == 10);
            Assert.True(nodeList[9].Key == 100);
        }
    private void Start()
    {
        BSTree tree = new BSTree();

        int[] data = { 62, 58, 88, 47, 73, 99, 35, 51, 93, 37 };
        for (int i = 0; i < data.Length; i++)
        {
            tree.Add(data[i]);
        }
        tree.MiddleTraversal();
        //Debug.Log(tree.Find(99));
        //Debug.Log(tree.Find(100));
        tree.Delete(73);
        tree.MiddleTraversal();
        tree.Delete(99);
        tree.MiddleTraversal();
    }
Ejemplo n.º 11
0
    public static void Main(string[] args)
    {
        BSTree tree = new BSTree();

        tree.Add(4);
        tree.Add(7);
        tree.Add(3);
        tree.Add(6);
        tree.Add(8);
        tree.Add(5);
        tree.Preorder(tree.root);
    }
Ejemplo n.º 12
0
        static void Main(string[] args)
        {
            //var bsTree = new BSTree(new[] { 12, 8, 3, 15, 12, 7, 2, 19, 11, 3 });

            //var a = bsTree.NumberOfOccurence(12);
            //var b = bsTree.NumberOfOccurence(0);
            //var c = bsTree.NumberOfOccurence(8);
            //var d = bsTree.NumberOfOccurence(3);

            ////bsTree.Delete(bsTree.Root, 12);
            ////bsTree.Delete(bsTree.Root, 12);
            ////bsTree.Delete(bsTree.Root, 2);
            ////bsTree.Delete(bsTree.Root, 0);
            //bsTree.Delete(bsTree.Root, 19);

            Console.WriteLine();


            GenerateMockData();

            var reader = new Reader();
            var writer = new Writer();

            //var quickSort = new DualPivotQuickSort();

            Console.WriteLine("Zadejte kolik cisel se ma generovat");
            var range = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Rozsah od");
            var from = Int32.Parse(Console.ReadLine());

            Console.WriteLine("Rozsah do");
            var to = Int32.Parse(Console.ReadLine());

            var mockGenerator = new MockNumberGenerator();

            var mockSpecification = new MockDataSpecification()
            {
                ValueFrom = from,
                ValueTo   = to,
                Count     = range
            };

            mockGenerator.WriteRandomNumbersInFile(mockSpecification);

            var data = reader.Read();

            Console.WriteLine("Tvorim strom");

            var bsTree = new BSTree(data);

            Console.WriteLine("Strom vytvoren");

            var runUntil = true;

            while (runUntil)
            {
                Console.WriteLine("Press  a to add value.");
                Console.WriteLine("Press  b  search value");
                Console.WriteLine("Press  c  remove value");
                Console.WriteLine("Press  d  to end");

                var pressedKey = Console.ReadLine();

                if (pressedKey == "a")
                {
                    Console.WriteLine("Zadejte cislo k pridani");
                    var number = Int32.Parse(Console.ReadLine());

                    bsTree.Add(number);
                    Console.WriteLine("Cislo pridano: " + number);
                }
                else if (pressedKey == "b")
                {
                    Console.WriteLine("Zadejte cislo k vypoctu vyskytu");
                    var number = Int32.Parse(Console.ReadLine());

                    var value = bsTree.NumberOfOccurence(number);

                    Console.WriteLine("Pocet vyskytu: " + value);
                }
                else if (pressedKey == "c")
                {
                    Console.WriteLine("Zadejte cislo k odstraneni ze stromu");
                    var number = Int32.Parse(Console.ReadLine());

                    bsTree.Delete(bsTree.Root, number);

                    Console.WriteLine("Odstraneni dokonceno");
                }

                else if (pressedKey == "d")
                {
                    runUntil = false;
                }
            }

            //Console.WriteLine("Konec, diiiky");

            //Console.WriteLine("Data se sortuji");

            //var sortedData = quickSort.Sort(data);

            //Console.WriteLine("Data se zapisuji");

            //writer.WriteDataInFile(data, "quicksortOutput.txt");

            //Console.WriteLine("Operace dokoncena");

            //var binarySerach = new BinarySearchDll.BinarySearch();

            //Console.WriteLine("Zadejte hledane cislo");
            //var searchedNumber = Int32.Parse(Console.ReadLine());

            //Console.WriteLine("Hledam pocetnost cisla: " + searchedNumber);

            //var count = binarySerach.GetNumberCountInNumbers(searchedNumber, sortedData);

            //Console.WriteLine("Operace dokoncena");
            //Console.WriteLine("Cislo: " + searchedNumber + " se vyskytuje: " + count);

            //var runUntil = true;

            //while (runUntil)
            //{

            //    Console.WriteLine("Press  a  to continue.");
            //    Console.WriteLine("Press  b  end");

            //    var pressedKey = Console.ReadLine();

            //    if (pressedKey == "a")
            //    {
            //        Console.WriteLine("Zadejte hledane cislo");
            //        searchedNumber = Int32.Parse(Console.ReadLine());
            //        Console.WriteLine("Hledam pocetnost cisla: " + searchedNumber);
            //        count = binarySerach.GetNumberCountInNumbers(searchedNumber, sortedData);
            //        Console.WriteLine("Operace dokoncena");
            //        Console.WriteLine("Cislo: " + searchedNumber + " se vyskytuje: " + count);
            //    }
            //    else if (pressedKey == "b")
            //    {
            //        runUntil = false;
            //    }
            //}

            //Console.WriteLine("Konec, diiiky");
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            int[] numbers      = { 5, 3, 7, 6, 8, 10, 9, 4, 2, 13, 0 };
            int[] inputNumbers = {};
            Console.WriteLine("Введите в консоль последовательность чисел через пробел, либо введите название файла (например 'file: nodes.txt') и нажмите Enter:");
            string line = Console.ReadLine();

            if (line.IndexOf("file: ") == 0)
            {
                string   path    = line.Substring(6);
                FileInfo fileInf = new FileInfo(path);

                // проверка на существование файла
                if (!fileInf.Exists)
                {
                    Console.WriteLine("Файл с названием: '{0}' не существует", path);
                    return;
                }

                string textFromFile = "";
                // чтение из файла
                using (FileStream fstream = File.OpenRead(path))
                {
                    // преобразуем строку в байты
                    byte[] array = new byte[fstream.Length];
                    // считываем данные
                    fstream.Read(array, 0, array.Length);
                    // декодируем байты в строку
                    textFromFile = System.Text.Encoding.Default.GetString(array);
                    Console.WriteLine($"Текст из файла: \n{textFromFile}");

                    inputNumbers = GetNodesFromString(line);
                }
            }
            else
            {
                inputNumbers = GetNodesFromString(line);
            }

            if (inputNumbers.Length > 0)
            {
                Console.WriteLine("Последовательность чисел не введена используется последовательность по умолчанию");
                numbers = inputNumbers;
            }
            // Инициализация биинарного дерева поиска
            BSTree binaryTree = new BSTree();

            // Добавления узлов в дерево
            foreach (int node in numbers)
            {
                binaryTree.Add(node);
            }

            Console.WriteLine("Бинарное дерево поиска:");
            binaryTree.Root.Print();

            int arithmeticalMean = binaryTree.GetArithmeticalMean();

            Console.WriteLine("\nСреднее арифметическое внутренних узлов сформированного дерева: {0}\n", arithmeticalMean);

            binaryTree.Dispose();
            Console.ReadLine();
        }