protected override int CompareTreeNodes(TreeNode_Base secondNode) { if (TotalCosts < secondNode.TotalCosts) { return(-1); } else if (TotalCosts > secondNode.TotalCosts) { return(1); } else { if (EstimatedCosts < secondNode.EstimatedCosts) { return(-1); } else if (EstimatedCosts > secondNode.EstimatedCosts) { return(1); } else { return(0); } } }
public Result RunStep() { ActualStep++; if (openNodeList.Count == 0) { return(Result.NoSolution); } openNodeList.Sort(); TreeNode_Base actualNodeToExpand = openNodeList[0]; openNodeList.Remove(actualNodeToExpand); actualNodeToExpand.ActualState = TreeNode_Base.State.Closed; if (actualNodeToExpand == EndNode) { return(Result.SolutionFound); } foreach (TreeNode_Base node in actualNodeToExpand.GetAllConnectedNodes()) { node.PreviousNode = actualNodeToExpand; node.ActualState = TreeNode_Base.State.Open; node.PreviousCosts = node.PreviousNode.PreviousCosts + TreeNode_Base.StepCost; if (!openNodeList.Contains(node)) { openNodeList.Add(node); } } return(Result.StepDone); }
protected override int CompareTreeNodes(TreeNode_Base secondNode) { if (PreviousCosts > secondNode.PreviousCosts) { return(-1); } else { if (PreviousCosts < secondNode.PreviousCosts) { return(1); } else { return(0); } } }
protected abstract int CompareTreeNodes(TreeNode_Base secondNode);