示例#1
0
 //DLR traverse tree
 static BiTree<string> CreateBiTree()
 {
     Node<string> a = new Node<string>("A");
     Node<string> b = new Node<string>("B");
     Node<string> c = new Node<string>("C");
     Node<string> e = new Node<string>("E");
     Node<string> d = new Node<string>("D");
     Node<string> f = new Node<string>("F");
     Node<string> g = new Node<string>("G");
     Node<string> h = new Node<string>("H");
     Node<string> i = new Node<string>("I");
     Node<string> j = new Node<string>("J");
     a.LChild = b;
     a.RChild = c;
     b.LChild = d;
     b.RChild = e;
     c.LChild = f;
     c.RChild = g;
     d.LChild = h;
     d.RChild = i;
     e.LChild = j;
     BiTree<string> bTree =new BiTree<string>(a);
     //Console.wr
     return bTree;
 }
示例#2
0
        public void If_Five_Elements_Inserted_Into_BiTree_In_Alphabetic_Order()
        {
            StudentTest st1 = new StudentTest { FirstName = "Артем", LastName = "Зозуля", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 82 };
            StudentTest st2 = new StudentTest { FirstName = "Семен", LastName = "Кириллов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 71 };
            StudentTest st3 = new StudentTest { FirstName = "Игорь", LastName = "Маликов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 78 };
            StudentTest st4 = new StudentTest { FirstName = "Виталий", LastName = "Таськов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 74 };
            StudentTest st5 = new StudentTest { FirstName = "Семен", LastName = "Доброштан", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 84 };
            BiTree<StudentTest> tree = new BiTree<StudentTest>();
            StudentTest[] studentsArray = new StudentTest[5];
            int count = 0;

            tree.Insert(st1);
            tree.Insert(st2);
            tree.Insert(st3);
            tree.Insert(st4);
            tree.Insert(st5);
            foreach (var student in tree)
            {
                studentsArray[count] = student;
                count++;
            }

            for (int i = 0; i < studentsArray.Length-1; i++)
            {
                Assert.IsTrue((studentsArray[i+1].CompareTo(studentsArray[i])>=0),"Elements not in alphabetic order. Method result: " + studentsArray[i + 1].LastName + " >= " + studentsArray[i].LastName);
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            Program prog = new Program();

            /*BiTree<int> tree3 = new BiTree<int>();
            tree3.Insert(6);*/

            StudentTest st1 = new StudentTest { FirstName = "Артем", LastName = "Зозуля", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 82 };
            StudentTest st2 = new StudentTest { FirstName = "Семен", LastName = "Кириллов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 71 };
            StudentTest st3 = new StudentTest { FirstName = "Игорь", LastName = "Маликов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 78 };
            StudentTest st4 = new StudentTest { FirstName = "Виталий", LastName = "Таськов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 74 };
            StudentTest st5 = new StudentTest { FirstName = "Семен", LastName = "Доброштан", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 84 };
            //BiTree<StudentTest> tree = new BiTree<StudentTest>(new StudentTestByTestTitleComparator());
            BiTree<StudentTest> tree = new BiTree<StudentTest>();
            tree.ItemRemoved += prog.Tree_ItemRemoved;
            tree.Insert(st1);
            tree.Insert(st2);
            tree.Insert(st3);
            tree.Insert(st4);
            tree.Insert(st5);
            foreach (var item in tree)
            {
                Console.WriteLine(item.LastName);
            }
            Console.WriteLine("Дерево содержит элементов: " + tree.GetTreeCount);
            Console.WriteLine("-----------------");
            tree.Remove(st2);
            Console.WriteLine("-----------------");
            foreach (var item in tree)
            {
                Console.WriteLine(item.LastName);
            }
            Console.WriteLine("Дерево содержит элементов: " + tree.GetTreeCount);

            try
            {
                BiTree<int> tree2 = new BiTree<int>();
                Console.WriteLine("Value type поиск-----------------");
                Console.WriteLine(tree2.Search(2));
                tree2.Insert(2);
                Console.WriteLine("Value type поиск-----------------");
                Console.WriteLine(tree2.Search(2).GetValue);
                tree2.Insert(12);
                tree2.Insert(8);
                tree2.Insert(15);
                tree2.Insert(4);
                Console.WriteLine("Value type -----------------");
                foreach (var item in tree2)
                {
                    Console.WriteLine(item);
                }
            }
            catch (NotImplementedException notImplEx)
            {
                Console.WriteLine(notImplEx.Message);
            }

            Console.ReadKey();
        }
示例#4
0
        public void If_InsertMethod_Increases_BiTree_Count()
        {
            StudentTest st1 = new StudentTest { FirstName = "Артем", LastName = "Зозуля", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 82 };
            BiTree<StudentTest> tree = new BiTree<StudentTest>();
            int expectedCount = 1;

            tree.Insert(st1);

            Assert.AreEqual(expectedCount, tree.GetTreeCount);
        }
 public static void Show <T>(BiTree <T> biTree)
 {
     Console.WriteLine("Tree now consist of " + biTree.Count + " elements(inorder version):");
     foreach (var element in biTree.Inorder())
     {
         Console.Write(element + " ");
     }
     Console.WriteLine("\n");
     Console.WriteLine("Preoder version of the same tree");
     foreach (var element in biTree.Preorder())
     {
         Console.Write(element + " ");
     }
     Console.WriteLine("\n");
 }
    private void Start()
    {
        char[]        data = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };//这个是我们要存储的数据
        BiTree <char> tree = new BiTree <char>(10);

        for (int i = 0; i < data.Length; i++)
        {
            tree.Add(data[i]);
        }
        //先序遍历
        tree.FirstTraversal();
        //中序遍历
        tree.MiddleTraversal();
        //后序遍历
        tree.LastTraversal();
        //层级遍历
        tree.LastTraversal();
    }
示例#7
0
            static void MenuCilcked()
            {
                char[]        data = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
                BiTree <char> tree = new BiTree <char>(10);

                for (int i = 0; i < data.Length; i++)
                {
                    tree.Add(data[i]);
                }
                tree.FirstTraversal();

                Debug.Log("---------------");

                tree.MidTraversal();

                Debug.Log("---------------");

                tree.LastTraversal();
            }
示例#8
0
        public void If_SearchMethod_Searches_Correct_Node()
        {
            StudentTest st1 = new StudentTest { FirstName = "Артем", LastName = "Зозуля", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 82 };
            StudentTest st2 = new StudentTest { FirstName = "Семен", LastName = "Кириллов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 71 };
            StudentTest st3 = new StudentTest { FirstName = "Игорь", LastName = "Маликов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 78 };
            StudentTest st4 = new StudentTest { FirstName = "Виталий", LastName = "Таськов", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 74 };
            StudentTest st5 = new StudentTest { FirstName = "Семен", LastName = "Доброштан", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 84 };
            BiTree<StudentTest> tree = new BiTree<StudentTest>();

            tree.Insert(st1);
            tree.Insert(st2);
            tree.Insert(st3);
            tree.Insert(st4);
            tree.Insert(st5);
            TreeNode<StudentTest> node = tree.Search(st3);
            StudentTest expectedSt = node.GetValue;

            Assert.IsTrue(expectedSt.CompareTo(st3) == 0);
        }
示例#9
0
        public void LevelOrderTest()
        {
            var tree     = new BiTree <int>(1);
            var new_node = tree.InsertLeft(2, tree.Head);

            tree.InsertLeft(3, new_node);
            tree.InsertRight(4, new_node);
            new_node = tree.InsertRight(5, tree.Head);
            var node6 = tree.InsertRight(6, new_node);

            new_node = tree.InsertLeft(7, node6);
            tree.InsertLeft(8, new_node);
            new_node = tree.InsertRight(9, node6);
            tree.InsertRight(10, new_node);

            foreach (var node in tree.LevelOrder(tree.Head))
            {
                Console.WriteLine(node.Data);
            }
        }
        static void Main(string[] args)
        {
            #region Queue of integers

            Structure.Queue <int> intQueue = new Queue <int>(new int[] { 1, 2, 3, 4, 5, 2 });
            Show(intQueue);

            Console.WriteLine("Lets add some elements to the queue");
            intQueue.Enqueue(10);
            intQueue.Enqueue(-41);
            Show(intQueue);

            Console.WriteLine("Lets remove 3 elements from the queue");
            intQueue.Dequeue();
            intQueue.Dequeue();
            intQueue.Dequeue();
            Show(intQueue);

            Console.WriteLine("First element in the queue is : " + intQueue.Peek());

            Console.WriteLine("Lets delete the queue");
            intQueue.Clear();
            Show(intQueue);

            #endregion

            #region Queue of strings

            Console.WriteLine("\n\nNew Queue of strings: ");
            Queue <string> stringQueue = new Queue <string>(new[] { "first", "second", "third", "fourth", "fifth" });
            Show(stringQueue);

            Console.WriteLine("Lets add some elements to the queue");
            stringQueue.Enqueue("sixth");
            stringQueue.Enqueue("seventh");
            Show(stringQueue);

            Console.WriteLine("Lets remove 3 elements from the queue");
            stringQueue.Dequeue();
            stringQueue.Dequeue();
            stringQueue.Dequeue();
            Show(stringQueue);

            Console.WriteLine($"Queue contains sixth : {stringQueue.Contains("sixth")}");
            Console.WriteLine($"Queue contains Sixth with defaultcomparer : {stringQueue.Contains("Sixth")}");
            Console.WriteLine($"Queue contains Sixth with nonedafaultcomparer : {stringQueue.Contains("Sixth",new NoneDefaultStringComparer())}");

            Console.WriteLine("\nFirst element in the queue is : " + stringQueue.Peek());

            Console.WriteLine("Lets delete the queue");
            stringQueue.Clear();
            Show(stringQueue);

            #endregion

            #region Set of integers

            Set <string> intSet = new Set <string>(new[] { "1", "4", "4", "6", "3", "10", "3" });
            Show(intSet);

            Console.WriteLine("Lets add some elements to the set");
            intSet.Add("18");
            intSet.Add("22");
            intSet.Add("1");
            Show(intSet);

            Console.WriteLine("Lets delete some elements from the set");
            intSet.Remove("4");
            intSet.Remove("10");
            Show(intSet);

            Console.WriteLine("Lets copy our set to another one");
            Set <string> newIntSet = intSet.Clone();
            Show(newIntSet);
            Console.WriteLine($"ReferenceEquqls: {ReferenceEquals(intSet,newIntSet)}");

            Console.WriteLine($"Are this sets equals ? {intSet.SetEquals(newIntSet)}");

            Console.WriteLine("\nLets add some elements to old set");
            intSet.Add("100");

            Console.WriteLine($"\nIs an old set is a superset of new set? {intSet.IsSupersetOf(newIntSet)}");
            Console.WriteLine($"\nIs a new set is a subset of old one? {newIntSet.IsSubsetOf(intSet)}");
            Console.WriteLine($"\nAre these 2 set overlapsed? {newIntSet.Overlaps(intSet)}");

            Console.WriteLine("\nLets use Symmetric exeptwith and try again");
            newIntSet.SymmetricExceptWith(intSet);
            Console.WriteLine($"Are these 2 set overlapsed? {newIntSet.Overlaps(intSet)}");

            intSet.Add("222");
            intSet.Add("333");
            Console.WriteLine("222 and 333 were added to an old set. And now lets Intersect it with new one");
            intSet.IntersectWith(newIntSet);
            Show(intSet);

            Console.WriteLine("Lets look at new set exceptwith old one");
            newIntSet.ExceptWith(intSet);
            Show(newIntSet);

            #endregion

            #region BiTree Int32 with default and not default comparers
            Console.WriteLine("Lets create new binary tree<int> with default comparer");
            BiTree <int> biTreeInt = new BiTree <int>(new int[] { 10, 15, -7, 7, 14, 3, 2, 1, 22 });
            Show(biTreeInt);
            Console.WriteLine("Tree contains 22: " + biTreeInt.Contains(22) + "\n Tree contains -16:" + biTreeInt.Contains(-16));

            Console.WriteLine("Lets remove 3");
            biTreeInt.Remove(3);
            Show(biTreeInt);

            Console.WriteLine("Lets create new binary trr<int> with logic of compearing int by Math.Abs");
            BiTree <int> biTreeInt2 = new BiTree <int>(new int[] { 10, 15, -7, 7, 14, 3, 2, 1, 22 }, NoneDefaultComparisionForIntTree);
            Show(biTreeInt2);
            Console.WriteLine("Tree contains 22: " + biTreeInt2.Contains(22) + "\n Tree contains -16:" + biTreeInt2.Contains(-16));

            Console.WriteLine("Lets remove 3");
            biTreeInt2.Remove(3);
            Show(biTreeInt2);

            Console.WriteLine("Lets create new trii but with interface parametr");
            BiTree <int> newByTree = new BiTree <int>(new [] { -123, 32, 312, 31, 5, 12, 13, 515 }, new ComparerForByTree());
            Show(newByTree);

            #endregion

            #region BiTree String with default and nonedefault comparers

            Console.WriteLine("Lets create a tree of string with default comparer");
            BiTree <string> biTreeStrings = new BiTree <string>(new [] { "onde", "two", "three", "four", "five", "six", "seven" });
            Show(biTreeStrings);

            Console.WriteLine("Tree contains onde: " + biTreeStrings.Contains("onde") + "\nTree contains nine" + biTreeStrings.Contains("nine"));

            Console.WriteLine("Lets remove four");
            biTreeStrings.Remove("four");
            Show(biTreeStrings);


            Console.WriteLine("Lets create a tree of string with comparer of lenth of string");
            BiTree <string> biTreeStrings2 = new BiTree <string>(new[] { "onde", "two", "three", "four", "five", "six", "seven" });
            Show(biTreeStrings2);

            Console.WriteLine("Tree contains onde: " + biTreeStrings2.Contains("onde") + "\nTree contains nine" + biTreeStrings2.Contains("nine"));

            Console.WriteLine("Lets remove four");
            biTreeStrings.Remove("four");
            Show(biTreeStrings2);


            #endregion >
            Console.ReadKey();
        }
示例#11
0
        public void Nothing_To_Remove_In_BeTree_If_Try_To_Remove()
        {
            StudentTest st1 = new StudentTest { FirstName = "Артем", LastName = "Зозуля", TestTitle = ".NET", TestDate = new DateTime(2016, 9, 25), TestResult = 82 };
            BiTree<StudentTest> tree = new BiTree<StudentTest>();

            tree.Remove(st1);
        }