public bool MoveNext() { switch (_action) { case Action.Right: _current = _right; while (_current.Left != null) { _current = _current.Left; } _right = _current.Right; _action = _right != null ? Action.Right : Action.Parent; return(true); case Action.Parent: while (_current.Parent != null) { AvlNode <TKey, TValue> previous = _current; _current = _current.Parent; if (_current.Left == previous) { _right = _current.Right; _action = _right != null ? Action.Right : Action.Parent; return(true); } } _action = Action.End; return(false); default: return(false); } }
public void Reset() { _right = _root; _action = _root == null ? Action.End : Action.Right; }
public AvlNodeEnumerator(AvlNode <TKey, TValue> root) { _right = _root = root; _action = _root == null ? Action.End : Action.Right; }