.
This commit is contained in:
@@ -17,15 +17,23 @@ namespace wep {
|
||||
|
||||
template<typename VisitType>
|
||||
void wepDepthFirstSearch(wfr::wep::AbstractWepNode* startNode, const VisitType& visitFunction,
|
||||
std::set<wfr::wep::AbstractWepNode*>& visitedNodes = std::set<wfr::wep::AbstractWepNode*>()) {
|
||||
visitedNodes.insert(startNode);
|
||||
std::set<wfr::wep::AbstractWepNode*>* visitedNodes = nullptr) {
|
||||
bool deleteVisitedNodeSet = false;
|
||||
if (visitedNodes == nullptr) {
|
||||
visitedNodes = new std::set<wfr::wep::AbstractWepNode*>();
|
||||
deleteVisitedNodeSet = true;
|
||||
}
|
||||
visitedNodes->insert(startNode);
|
||||
if (visitFunction(startNode)) {
|
||||
for (auto c : startNode->getSuccessors()) {
|
||||
if (visitedNodes.find(c) == visitedNodes.end()) {
|
||||
if (visitedNodes->find(c) == visitedNodes->end()) {
|
||||
wepDepthFirstSearch(c, visitFunction, visitedNodes);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (deleteVisitedNodeSet) {
|
||||
delete visitedNodes;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user