public bool MoveNext() { while (_tmp.Count > 0) { var minKey = _tmp.MinKey(); var min = _tmp.RemoveMin(); int child1, child2; _tree.GetChildren(min, out child1, out child2); if (child1 == -1) { Current = new NearestNodeResult(min, minKey, _tree.GetUserData <object>(min)); return(true); } Insert(child1); Insert(child2); } Current = default(NearestNodeResult); return(false); }