// value associated with the given predicator; null if no such element public bool TryFind(SearchPredicator <TEl> predicator, out TEl element) { var node = FindNode(Root, predicator); if (node != null) { element = node.Element; return(true); } element = default(TEl); return(false); }
protected TNode FindNode(TNode x, SearchPredicator <TEl> predicator) { while (x != null) { var cmp = predicator.ElementCompliance(x.Element); if (cmp < 0) { x = x.Left; } else if (cmp > 0) { x = x.Right; } else { return(x); } } return(x); }