public void AvlTree_AddRotateLeft_Test() { Func <int, int, bool> Smaller = (a, b) => { return(a < b); }; AvlTree <int> Tree = new AvlTree <int>(Smaller); AvlTree <int> .NodeCheck _2 = AvlTree <int> .NodeCheck.ConvirmValue(2), _1 = AvlTree <int> .NodeCheck.ConvirmValue(1), _4 = AvlTree <int> .NodeCheck.ConvirmValue(4), _3 = AvlTree <int> .NodeCheck.ConvirmValue(3), _5 = AvlTree <int> .NodeCheck.ConvirmValue(5); _2.NextCheck = _1; _1.NextCheck = _4; _4.NextCheck = _3; _3.NextCheck = _5; Tree.Add(1); Tree.Add(2); Tree.Add(3); Tree.Add(4); Tree.Add(5); //Tree.Dump(); Tree.HierarchyCheck(_2); }
public void AvlTree_String_ExtendedInsertionRebalance_Test() { Func <string, string, bool> Smaller = (text1, text2) => { return(string.Compare(text1, text2, StringComparison.OrdinalIgnoreCase) < 0); }; AvlTree <string> StrTree = new AvlTree <string>(Smaller); StrTree.Add("ORY"); StrTree.Add("JFK"); StrTree.Add("BRU"); StrTree.Add("DUS"); StrTree.Add("ZRH"); StrTree.Add("MEX"); StrTree.Add("ORD"); StrTree.Add("NRT"); StrTree.Add("ARN"); StrTree.Add("GLA"); StrTree.Add("GCM"); AvlTree <string> .NodeCheck _JFK = AvlTree <string> .NodeCheck.ConvirmValue("JFK"), _BRU = AvlTree <string> .NodeCheck.ConvirmValue("BRU"), _ARN = AvlTree <string> .NodeCheck.ConvirmValue("ARN"), _GCM = AvlTree <string> .NodeCheck.ConvirmValue("GCM"), _DUS = AvlTree <string> .NodeCheck.ConvirmValue("DUS"), _GLA = AvlTree <string> .NodeCheck.ConvirmValue("GLA"), _ORY = AvlTree <string> .NodeCheck.ConvirmValue("ORY"), _NRT = AvlTree <string> .NodeCheck.ConvirmValue("NRT"), _MEX = AvlTree <string> .NodeCheck.ConvirmValue("MEX"), _ORD = AvlTree <string> .NodeCheck.ConvirmValue("ORD"), _ZRH = AvlTree <string> .NodeCheck.ConvirmValue("ZRH"); _JFK.NextCheck = _BRU; _BRU.NextCheck = _ARN; _ARN.NextCheck = _GCM; _GCM.NextCheck = _DUS; _DUS.NextCheck = _GLA; _GLA.NextCheck = _ORY; _ORY.NextCheck = _NRT; _NRT.NextCheck = _MEX; _MEX.NextCheck = _ORD; _ORD.NextCheck = _ZRH; StrTree.HierarchyCheck(_JFK); }
public void AvlTree_AddDoubleRotateLeft_Test() { Func<int, int, bool> Smaller = (a, b) => { return a < b; }; AvlTree<int> Tree = new AvlTree<int>(Smaller); AvlTree<int>.NodeCheck _3 = AvlTree<int>.NodeCheck.ConvirmValue(3), _1 = AvlTree<int>.NodeCheck.ConvirmValue(1), _2 = AvlTree<int>.NodeCheck.ConvirmValue(2), _4 = AvlTree<int>.NodeCheck.ConvirmValue(4), _5 = AvlTree<int>.NodeCheck.ConvirmValue(5); _3.NextCheck = _1; _1.NextCheck = _2; _2.NextCheck = _4; _4.NextCheck = _5; Tree.Add(1); Tree.Add(4); Tree.Add(3); Tree.Add(5); Tree.Add(2); //Tree.Dump(); Tree.HierarchyCheck(_3); }
public void AvlTree_Balance_Test() { AvlTree <int> Tree = new AvlTree <int>((a, b) => { return(a < b); }); Tree.Add(5); Tree.Add(4); Tree.Add(3); Tree.Add(2); Tree.Add(1); Tree.Add(0); Tree.Dump(); AvlTree <int> .NodeCheck RootCheck = new AvlTree <int> .NodeCheck(), Check_Left1 = new AvlTree <int> .NodeCheck(), Check_Right1 = new AvlTree <int> .NodeCheck(), Check_Left1_Left2 = new AvlTree <int> .NodeCheck(), Check_Right1_Left2 = new AvlTree <int> .NodeCheck(), Check_Right1_Right2 = new AvlTree <int> .NodeCheck() ; // This is an explicit structural test RootCheck.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(2, nodeCheck.Value); Assert.AreEqual(0, nodeCheck.ParentId); Assert.AreNotEqual(0, nodeCheck.LeftId); Assert.AreNotEqual(0, nodeCheck.RightId); return(true); }; RootCheck.NextCheck = Check_Left1; Check_Left1.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(1, nodeCheck.Value); Assert.AreEqual(RootCheck.ThisId, nodeCheck.ParentId); Assert.AreEqual(RootCheck.LeftId, nodeCheck.ThisId); Assert.Greater(RootCheck.Value, nodeCheck.Value); Assert.AreNotEqual(0, nodeCheck.LeftId); // should be left node Assert.AreEqual(0, nodeCheck.RightId); // but no right node. return(true); }; Check_Left1.NextCheck = Check_Left1_Left2; Check_Left1_Left2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(0, nodeCheck.Value); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.AreEqual(Check_Left1.ThisId, nodeCheck.ParentId); Assert.Greater(Check_Left1.Value, nodeCheck.Value); return(true); }; Check_Left1_Left2.NextCheck = Check_Right1; Check_Right1.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(4, nodeCheck.Value); Assert.AreEqual(RootCheck.ThisId, nodeCheck.ParentId); Assert.AreEqual(RootCheck.RightId, nodeCheck.ThisId); Assert.AreNotEqual(0, nodeCheck.LeftId); Assert.AreNotEqual(0, nodeCheck.RightId); Assert.Less(RootCheck.Value, nodeCheck.Value); return(true); }; Check_Right1.NextCheck = Check_Right1_Left2; Check_Right1_Left2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(3, nodeCheck.Value); Assert.AreEqual(Check_Right1.ThisId, nodeCheck.ParentId); Assert.AreEqual(Check_Right1.LeftId, nodeCheck.ThisId); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.Greater(Check_Right1.Value, nodeCheck.Value); return(true); }; Check_Right1_Left2.NextCheck = Check_Right1_Right2; Check_Right1_Right2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(5, nodeCheck.Value); Assert.AreEqual(Check_Right1.ThisId, nodeCheck.ParentId); Assert.AreEqual(Check_Right1.RightId, nodeCheck.ThisId); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.Less(Check_Right1.Value, nodeCheck.Value); return(false); // end of tree }; Tree.HierarchyCheck(RootCheck); Console.WriteLine("\r\n: Tree Looks Like:"); Tree.InOrder((num) => { Console.WriteLine("> {0}", num); }); }
public void AvlTree_String_ExtendedInsertionRebalance_Test() { Func<string, string, bool> Smaller = (text1, text2) => { return string.Compare(text1, text2, StringComparison.OrdinalIgnoreCase) < 0; }; AvlTree<string> StrTree = new AvlTree<string>(Smaller); StrTree.Add("ORY"); StrTree.Add("JFK"); StrTree.Add("BRU"); StrTree.Add("DUS"); StrTree.Add("ZRH"); StrTree.Add("MEX"); StrTree.Add("ORD"); StrTree.Add("NRT"); StrTree.Add("ARN"); StrTree.Add("GLA"); StrTree.Add("GCM"); AvlTree<string>.NodeCheck _JFK = AvlTree<string>.NodeCheck.ConvirmValue("JFK"), _BRU = AvlTree<string>.NodeCheck.ConvirmValue("BRU"), _ARN = AvlTree<string>.NodeCheck.ConvirmValue("ARN"), _GCM = AvlTree<string>.NodeCheck.ConvirmValue("GCM"), _DUS = AvlTree<string>.NodeCheck.ConvirmValue("DUS"), _GLA = AvlTree<string>.NodeCheck.ConvirmValue("GLA"), _ORY = AvlTree<string>.NodeCheck.ConvirmValue("ORY"), _NRT = AvlTree<string>.NodeCheck.ConvirmValue("NRT"), _MEX = AvlTree<string>.NodeCheck.ConvirmValue("MEX"), _ORD = AvlTree<string>.NodeCheck.ConvirmValue("ORD"), _ZRH = AvlTree<string>.NodeCheck.ConvirmValue("ZRH"); _JFK.NextCheck = _BRU; _BRU.NextCheck = _ARN; _ARN.NextCheck = _GCM; _GCM.NextCheck = _DUS; _DUS.NextCheck = _GLA; _GLA.NextCheck = _ORY; _ORY.NextCheck = _NRT; _NRT.NextCheck = _MEX; _MEX.NextCheck = _ORD; _ORD.NextCheck = _ZRH; StrTree.HierarchyCheck(_JFK); }
public void AvlTree_Balance_Test() { AvlTree<int> Tree = new AvlTree<int>((a, b) => { return a < b; }); Tree.Add(5); Tree.Add(4); Tree.Add(3); Tree.Add(2); Tree.Add(1); Tree.Add(0); Tree.Dump(); AvlTree<int>.NodeCheck RootCheck = new AvlTree<int>.NodeCheck(), Check_Left1 = new AvlTree<int>.NodeCheck(), Check_Right1 = new AvlTree<int>.NodeCheck(), Check_Left1_Left2 = new AvlTree<int>.NodeCheck(), Check_Right1_Left2 = new AvlTree<int>.NodeCheck(), Check_Right1_Right2 = new AvlTree<int>.NodeCheck() ; // This is an explicit structural test RootCheck.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(2, nodeCheck.Value); Assert.AreEqual(0, nodeCheck.ParentId); Assert.AreNotEqual(0, nodeCheck.LeftId); Assert.AreNotEqual(0, nodeCheck.RightId); return true; }; RootCheck.NextCheck = Check_Left1; Check_Left1.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(1, nodeCheck.Value); Assert.AreEqual(RootCheck.ThisId, nodeCheck.ParentId); Assert.AreEqual(RootCheck.LeftId, nodeCheck.ThisId); Assert.Greater(RootCheck.Value, nodeCheck.Value); Assert.AreNotEqual(0, nodeCheck.LeftId); // should be left node Assert.AreEqual(0, nodeCheck.RightId); // but no right node. return true; }; Check_Left1.NextCheck = Check_Left1_Left2; Check_Left1_Left2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(0, nodeCheck.Value); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.AreEqual(Check_Left1.ThisId, nodeCheck.ParentId); Assert.Greater(Check_Left1.Value, nodeCheck.Value); return true; }; Check_Left1_Left2.NextCheck = Check_Right1; Check_Right1.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(4, nodeCheck.Value); Assert.AreEqual(RootCheck.ThisId, nodeCheck.ParentId); Assert.AreEqual(RootCheck.RightId, nodeCheck.ThisId); Assert.AreNotEqual(0, nodeCheck.LeftId); Assert.AreNotEqual(0, nodeCheck.RightId); Assert.Less(RootCheck.Value, nodeCheck.Value); return true; }; Check_Right1.NextCheck = Check_Right1_Left2; Check_Right1_Left2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(3, nodeCheck.Value); Assert.AreEqual(Check_Right1.ThisId, nodeCheck.ParentId); Assert.AreEqual(Check_Right1.LeftId, nodeCheck.ThisId); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.Greater(Check_Right1.Value, nodeCheck.Value); return true; }; Check_Right1_Left2.NextCheck = Check_Right1_Right2; Check_Right1_Right2.Verify = (nodeCheck) => { Console.WriteLine(nodeCheck); Assert.AreEqual(5, nodeCheck.Value); Assert.AreEqual(Check_Right1.ThisId, nodeCheck.ParentId); Assert.AreEqual(Check_Right1.RightId, nodeCheck.ThisId); Assert.AreEqual(0, nodeCheck.LeftId); Assert.AreEqual(0, nodeCheck.RightId); Assert.Less(Check_Right1.Value, nodeCheck.Value); return false; // end of tree }; Tree.HierarchyCheck(RootCheck); Console.WriteLine("\r\n: Tree Looks Like:"); Tree.InOrder((num) => { Console.WriteLine("> {0}", num); }); }