public void TestDeleteComplex() { var testData = TestDataGenerator.GetKeysAndValues(treeCount); var treeHead = new StdNode <int, string>(); List <int> existingKeys = new List <int>(testData.Item1); List <int> deletedKeys = new List <int>(); Random rnd = new Random(); for (int i = 0; i < treeCount; i++) { treeHead.Insert(testData.Item1[i], testData.Item2[i]); } while (existingKeys.Count > 0) { foreach (int key in existingKeys) { Assert.AreEqual(Convert.ToString(key), treeHead.Find(key)); } int keyToDelete = existingKeys[rnd.Next(0, existingKeys.Count - 1)]; treeHead.Delete(keyToDelete); deletedKeys.Add(keyToDelete); existingKeys.RemoveAll(x => x == keyToDelete); int deletedKeyToFind = deletedKeys[rnd.Next(0, deletedKeys.Count - 1)]; Assert.AreEqual(null, treeHead.Find(deletedKeyToFind)); } }
public void TestDelete3() { var treeHead = new StdNode<int, string>(); var keys = new List<int>(new int[] { 10, 5, 15, 12, 17, 18 }); var keyToDelete = keys[2]; foreach (int key in keys) treeHead.Insert(key, Convert.ToString(key)); treeHead.Delete(keyToDelete); keys.Remove(keyToDelete); Assert.AreEqual(null, treeHead.Find(keyToDelete)); foreach (int key in keys) Assert.AreEqual(Convert.ToString(key), treeHead.Find(key)); }
public void TestDelete3()//удаление узла с обоими потомками, но у правого потомка нет левой ветви { var treeHead = new StdNode <int, string>(); var keys = new List <int>(new int[] { 10, 5, 15, 12, 17, 18 }); var keyToDelete = keys[2]; foreach (int key in keys) { treeHead.Insert(key, Convert.ToString(key)); } treeHead.Delete(keyToDelete); keys.Remove(keyToDelete); Assert.AreEqual(null, treeHead.Find(keyToDelete)); foreach (int key in keys) { Assert.AreEqual(Convert.ToString(key), treeHead.Find(key)); } }
public void TestDelete2()//удаление узла с одним из потомков { var treeHead = new StdNode <int, string>(); var keys = new List <int>(new int[] { 10, 5, 15, 12 }); var keyToDelete = keys[2]; foreach (int key in keys) { treeHead.Insert(key, Convert.ToString(key)); } treeHead.Delete(keyToDelete); keys.Remove(keyToDelete); Assert.AreEqual(null, treeHead.Find(keyToDelete)); foreach (int key in keys) { Assert.AreEqual(Convert.ToString(key), treeHead.Find(key)); } }
public void TestDeleteComplex() { var testData = TestDataGenerator.GetKeysAndValues(treeCount); var treeHead = new StdNode<int, string>(); List<int> existingKeys = new List<int>(testData.Item1); List<int> deletedKeys = new List<int>(); Random rnd = new Random(); for (int i = 0; i < treeCount; i++) treeHead.Insert(testData.Item1[i], testData.Item2[i]); while (existingKeys.Count > 0) { foreach (int key in existingKeys) Assert.AreEqual(Convert.ToString(key), treeHead.Find(key)); int keyToDelete = existingKeys[rnd.Next(0, existingKeys.Count - 1)]; treeHead.Delete(keyToDelete); deletedKeys.Add(keyToDelete); existingKeys.RemoveAll(x => x == keyToDelete); int deletedKeyToFind = deletedKeys[rnd.Next(0, deletedKeys.Count - 1)]; Assert.AreEqual(null, treeHead.Find(deletedKeyToFind)); } }