// Melakukan pencarian dengan node menuju rootNode private void _DFSIn(int curr, int target) { CheckedNode.Add(curr); PathNode.Push(curr); if (curr == target) { IsFound = true; return; } if (curr != rootNode) { _DFSIn(ParentNode[curr], target); } if (!IsFound) { PathNode.Pop(); } }
// Melakukan pencarian dengan DFS, node menjauhi rootNode private void _DFSOut(int curr, int target) { CheckedNode.Add(curr); PathNode.Push(curr); if (curr == target) { IsFound = true; return; } foreach (int next in ChildNode[curr]) { _DFSOut(next, target); if (IsFound) { return; } } if (!IsFound) { PathNode.Pop(); } }