public bool TryGetValue(TKey key, out TValue value) { value = default(TValue); var ret = tree.Find(new KeyValuePair <TKey, TValue>(key, value)); if (ret != null) { value = ret.Item.Value; return(true); } return(false); }
internal bool RemoveExact(BasicReflectionEvent initialSite) { RBNode <BasicReflectionEvent> node = eventTree.Find(initialSite); if (null != node) { if (node.Item.Site == initialSite.Site) { eventTree.DeleteNodeInternal(node); return(true); } } return(false); }
public void Find_TryFindNoExistElement_Exception() { var comparer = new StringComparator(); var map = new RbTree <string, int>(comparer); map.Insert("ffg", 45); map.Insert("acb", 21); map.Insert("hyred", 90); map.Delete("acb"); Assert.Throws <Exception>(() => map.Find("acb")); }
private static void Main() { var rbtree = new RbTree <int>(); rbtree.Insert(3); rbtree.Insert(2); rbtree.Insert(5); rbtree.Insert(7); rbtree.Insert(6); rbtree.Insert(11); rbtree.Insert(13); rbtree.Insert(1); rbtree.Insert(4); rbtree.Preorder(); Console.WriteLine(rbtree.Find(2)); Console.ReadLine(); }
public void Find_InsertFiveElements_CorrectValue() { var comparer = new StringComparator(); var map = new RbTree <string, int>(comparer); map.Insert("Me", 51); map.Insert("You", 651); map.Insert("Her", 89); map.Insert("Him", 612); map.Insert("zero", -7); var actual = map.Find("Him"); var expected = 612; Assert.AreEqual(expected, actual); }
public void Delete_InsertThreeElementsAndDeleteTwoElements_FindOneElement() { var comparer = new StringComparator(); var map = new RbTree <string, int>(comparer); map.Insert("vga", 5); map.Insert("hj", 1); map.Insert("vbz", 9); map.Delete("vga"); map.Delete("vbz"); var actual = map.Find("hj"); var expected = 1; Assert.AreEqual(expected, actual); }
// static int count; void GoOverConesSeeingVertexEvent(SweepEvent vertexEvent) { RBNode <ConeSide> rbNode = FindFirstSegmentInTheRightTreeNotToTheLeftOfVertex(vertexEvent); if (rbNode == null) { return; } ConeSide coneRightSide = rbNode.Item; Cone cone = coneRightSide.Cone; ConeSide leftConeSide = cone.LeftSide; if (VertexIsToTheLeftOfSegment(vertexEvent, leftConeSide)) { return; } var visibleCones = new List <Cone> { cone }; coneSideComparer.SetOperand(leftConeSide); rbNode = leftConeSides.Find(leftConeSide); if (rbNode == null) { double tmpZ = Z; Z = Math.Max(GetZ(leftConeSide.Start), PreviousZ); //we need to return to the past when the order was still correct coneSideComparer.SetOperand(leftConeSide); rbNode = leftConeSides.Find(leftConeSide); Z = tmpZ; #if TEST_MSAGL if (rbNode == null) { //GeometryGraph gg = CreateGraphFromObstacles(); //gg.Save("c:\\tmp\\bug"); PrintOutLeftSegTree(); Debug.WriteLine(leftConeSide); ShowLeftTree(new Ellipse(3, 3, vertexEvent.Site)); ShowRightTree(new Ellipse(3, 3, vertexEvent.Site)); } #endif } rbNode = leftConeSides.Next(rbNode); while (rbNode != null && !VertexIsToTheLeftOfSegment(vertexEvent, rbNode.Item)) { visibleCones.Add(rbNode.Item.Cone); rbNode = leftConeSides.Next(rbNode); } //Show(new Ellipse(1, 1, vertexEvent.Site)); foreach (Cone c in visibleCones) { AddEdge(c.Apex, vertexEvent.Site); RemoveCone(c); } }