/// <inheritdoc /> public sealed override IEnumerableEnumerator <TValue> Enumerate(TNode root, BreadthDepthTraversal method) { return(method switch { BreadthDepthTraversal.BreadthFirst => new BreadthFirstEnumerator(this, root), BreadthDepthTraversal.DepthFirst => new DepthFirstEnumerator(this, root), _ => throw new ArgumentOutOfRangeException(nameof(method), method, null) });
public sealed override IEnumerableEnumerator <T> Enumerate(T from, BreadthDepthTraversal method) { if (!ContainsKey(from)) { throw new KeyNotFoundException(); } return(method switch { BreadthDepthTraversal.BreadthFirst => new BreadthFirstEnumerator(this, from), BreadthDepthTraversal.DepthFirst => new DepthFirstEnumerator(this, from), _ => throw new ArgumentOutOfRangeException(nameof(method), method, null) });
public abstract IEnumerableEnumerator <T> Enumerate([NotNull] T from, BreadthDepthTraversal method);
public abstract IEnumerableEnumerator <TValue> Enumerate(BreadthDepthTraversal method);
/// <summary> /// Iterate over nodes with a callback function /// </summary> /// <param name="method">The technique to use when traversing</param> /// <param name="visitCallback">callback function to handle the node that can cancel the loop</param> public abstract void Iterate(BreadthDepthTraversal method, [NotNull] Func <TNode, bool> visitCallback);
/// <summary> /// Iterate over nodes with a callback action /// </summary> /// <param name="method">The technique to use when traversing</param> /// <param name="visitCallback">callback action to handle the node</param> public abstract void Iterate(BreadthDepthTraversal method, [NotNull] Action <TNode> visitCallback);
/// <inheritdoc /> public sealed override void Iterate(BreadthDepthTraversal method, Func <TNode, bool> visitCallback) { Iterate(Head, method, visitCallback); }
/// <inheritdoc /> public sealed override void Iterate(BreadthDepthTraversal method, Action <TNode> visitCallback) { Iterate(Head, method, visitCallback); }
/// <inheritdoc /> public sealed override IEnumerableEnumerator <TValue> Enumerate(BreadthDepthTraversal method) { return(Enumerate(Head, method)); }