public bool Equals(DefaultNode <T> otherNode) { if (otherNode == null) { return(false); } return(Item.Equals(otherNode.Item)); }
public override bool Equals(object obj) { if (obj == null) { return(false); } DefaultNode <T> otherNode = obj as DefaultNode <T>; if (otherNode == null) { return(false); } return(Item.Equals(otherNode.Item)); }
public static T[] FindPath <T>( T start, T destination, Func <T, T, double> getDistanceBetween, Func <T, IEnumerable <T> > getNeighbours) { DefaultNode <T> startingNode = new DefaultNode <T>(start, destination, getNeighbours); DefaultNode <T> destinationNode = new DefaultNode <T>(destination, destination, getNeighbours); Func <DefaultNode <T>, DefaultNode <T>, double> totalDistanceSoFar = (n1, n2) => getDistanceBetween(n1.Item, n2.Item); Func <DefaultNode <T>, double> estimateToDestination = (n) => getDistanceBetween(n.Item, destination); Path <DefaultNode <T> > path = FindPath(startingNode, destinationNode, totalDistanceSoFar, estimateToDestination); if (path == null) { return(null); } return(path .Select(n => n.Item) .ToArray()); }