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); }
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); }
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); }
public void AddNode_InEmptyTree_ShouldBe_Root() { BSTree <int> tree = new BSTree <int>(); tree.Add(10); Assert.True(tree.Root.Key == 10); }
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()); }
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); }
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); }
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."); }
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(); }
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); }
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"); }
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(); }