public void BuildHeap_Recursively() { var heap = new MinBinaryHeap <int, string>(_keyValues); heap.BuildHeap_Recursively(heap.HeapArray.Count); Assert.AreEqual(9, heap.HeapArray.Count); Assert.IsTrue(HasMinOrderPropertyForHeap(_keyValues.Count, heap)); }
public void GetNodeLevel() { var A = new KeyValuePair <int, string>(150, "A"); var B = new KeyValuePair <int, string>(70, "B"); var C = new KeyValuePair <int, string>(202, "C"); var D = new KeyValuePair <int, string>(34, "D"); var E = new KeyValuePair <int, string>(42, "E"); var F = new KeyValuePair <int, string>(1, "F"); var G = new KeyValuePair <int, string>(3, "G"); var H = new KeyValuePair <int, string>(10, "H"); var I = new KeyValuePair <int, string>(21, "I"); var keyValues = new List <KeyValuePair <int, string> > { A, B, C, D, E, F, G, H, I }; var heap = new MinBinaryHeap <int, string>(keyValues); heap.BuildHeap_Recursively(heap.HeapArray.Count); Assert.IsTrue(HasMinOrderPropertyForHeap(9, heap)); /* This is the expected positions of keys. */ Assert.AreEqual(0, keyValues.IndexOf(F)); Assert.AreEqual(1, keyValues.IndexOf(H)); Assert.AreEqual(2, keyValues.IndexOf(G)); Assert.AreEqual(3, keyValues.IndexOf(I)); Assert.AreEqual(4, keyValues.IndexOf(E)); Assert.AreEqual(5, keyValues.IndexOf(C)); Assert.AreEqual(6, keyValues.IndexOf(A)); Assert.AreEqual(7, keyValues.IndexOf(D)); Assert.AreEqual(8, keyValues.IndexOf(B)); Assert.AreEqual(2, heap.GetNodeLevel(keyValues.IndexOf(A))); Assert.AreEqual(3, heap.GetNodeLevel(keyValues.IndexOf(B))); Assert.AreEqual(2, heap.GetNodeLevel(keyValues.IndexOf(C))); Assert.AreEqual(3, heap.GetNodeLevel(keyValues.IndexOf(D))); Assert.AreEqual(2, heap.GetNodeLevel(keyValues.IndexOf(E))); Assert.AreEqual(0, heap.GetNodeLevel(keyValues.IndexOf(F))); Assert.AreEqual(1, heap.GetNodeLevel(keyValues.IndexOf(G))); Assert.AreEqual(1, heap.GetNodeLevel(keyValues.IndexOf(H))); Assert.AreEqual(2, heap.GetNodeLevel(keyValues.IndexOf(I))); }