Пример #1
0
        private void BuildHeapTree(Node <T, G>[] myInput)
        {
            Tree = new HeapTree <T, G>(myInput.Length);

            for (int i = 0; i < myInput.Length; i++)
            {
                Tree.Insert(myInput[i].Key, myInput[i].Value);
            }
        }
Пример #2
0
        public void Insert()
        {
            var heapTree = new HeapTree();

            heapTree.Insert(55);
            int index = heapTree.Search(55);

            Assert.AreEqual(1, index);
        }
Пример #3
0
        public void Empty()
        {
            HeapTree <int> tree = new HeapTree <int>(5);

            Assert.True(tree.IsEmpty());

            tree.Insert(5);

            Assert.False(tree.IsEmpty());
        }
Пример #4
0
        public void Insert()
        {
            HeapTree <int> tree = new HeapTree <int>(10);

            int[] expected = { 1, 3, 2, 6, 4, 5, 0, 0, 0, 0 };

            for (int i = 6; i > 0; i--)
            {
                tree.Insert(i);
            }

            Assert.Equal(expected, tree.GetTree());
        }
Пример #5
0
        public void Delete()
        {
            var heapTree = new HeapTree();

            heapTree.Insert(5);
            heapTree.Insert(6);
            heapTree.Insert(15);
            heapTree.Insert(7);
            heapTree.Insert(12);
            heapTree.Insert(9);
            heapTree.Insert(2);
            heapTree.Insert(54);
            heapTree.Insert(59);
            heapTree.Display();
            heapTree.DeleteRoot();
            heapTree.Display();
            int index = heapTree.Search(54);

            Assert.AreEqual(1, index);
        }
Пример #6
0
        public void Pop()
        {
            HeapTree <int> tree = new HeapTree <int>(10);

            int[] expected = { 2, 3, 5, 6, 4, 0, 0, 0, 0, 0 };

            for (int i = 6; i > 0; i--)
            {
                tree.Insert(i);
            }

            int temp = tree.Pop();

            Assert.Equal(1, temp);

            Assert.Equal(expected, tree.GetTree());
        }
Пример #7
0
        public void HeapTree_Insert_AtMiddle()
        {
            var heapTree = new HeapTree();

            var list = new List <int>()
            {
                2, 4, 6
            };
            var tree = heapTree.CreateTree(list).Result;

            Assert.AreEqual(6, tree.Data);
            Assert.AreEqual(4, tree.LeftNode.Data);
            Assert.AreEqual(2, tree.RightNode.Data);

            tree = heapTree.Insert(tree, 5).Result;
            Assert.AreEqual(6, tree.Data);
            Assert.AreEqual(5, tree.LeftNode.Data);
            Assert.AreEqual(4, tree.LeftNode.LeftNode.Data);
            Assert.AreEqual(2, tree.RightNode.Data);
        }
Пример #8
0
        /// <summary>
        /// Sorts array
        /// </summary>
        /// <param name="arr">The array to be sorted</param>
        /// <returns>The sorted array</returns>
        public T[] Sort(T[] arr)
        {
            // Sort is done by continuing to pop value into new array
            HeapTree <T> tree = new HeapTree <T>(arr.Length);

            T[] ret = new T[arr.Length];
            int ap  = 0;

            // I need to insert into tree
            for (int i = 0; i < arr.Length; i++)
            {
                tree.Insert(arr[i]);
            }

            while (!tree.IsEmpty())
            {
                ret[ap] = tree.Pop();
                ap++;
            }

            return(ret);
        }
Пример #9
0
        private static void TestHeapTree(int[] myArray)
        {
            Console.WriteLine("\n======== H-E-A-P-T-R-E-E ==================" +
                              "\n======== Complexity: Time O(n) Espace O(1)\nSteps:\n");

            StringBuilder result = new StringBuilder("Inserting keys ");

            HeapTree <int, int> tree = new HeapTree <int, int>(myArray.Length);
            Random rnd = new Random();

            for (int i = 0; i < myArray.Length; i++)
            {
                tree.Insert(myArray[i], rnd.Next(1, myArray.Length * 100));
                result.Append(myArray[i] + " ");
                Console.WriteLine("Insert time: " + tree.HeapLog.ToString());
            }

            result.Append("\nMy heap result: ");
            for (int i = 0; i < myArray.Length; i++)
            {
                result.Append(tree.Heap[i].Key + " ");
            }

            Console.WriteLine("\n" + result);

            Console.WriteLine("\nIn Order:\n" + tree.InOrder());
            Console.WriteLine("\nPos Order:\n" + tree.PosOrder());
            Console.WriteLine("\nPre Order:\n" + tree.PreOrder());

            result.Clear();
            for (int i = 0; i < myArray.Length; i++)
            {
                result.Append(tree.Remove().Key + " ");
            }
            Console.WriteLine("\nRemoved nodes:" + result + "\n");
        }
Пример #10
0
 /// <summary>
 /// Enqueues a value into queue
 /// </summary>
 /// <param name="val">The value to enqueue</param>
 public void Enqueue(T val)
 {
     tree.Insert(val);
 }