diff --git a/gtsam/discrete/DecisionTree-inl.h b/gtsam/discrete/DecisionTree-inl.h index c616c0269..627c1a5aa 100644 --- a/gtsam/discrete/DecisionTree-inl.h +++ b/gtsam/discrete/DecisionTree-inl.h @@ -668,9 +668,11 @@ namespace gtsam { for (size_t i = 0; i < choice->nrChoices(); i++) { choices[choice->label()] = i; // Set assignment for label to i - VisitWith visit(f); - visit.choices = choices; - visit(choice->branches()[i]); // recurse! + (*this)(choice->branches()[i]); // recurse! + + // Remove the choice so we are backtracking + auto choice_it = choices.find(choice->label()); + choices.erase(choice_it); } } }; diff --git a/gtsam/discrete/tests/testDecisionTree.cpp b/gtsam/discrete/tests/testDecisionTree.cpp index ca5daf201..91deed625 100644 --- a/gtsam/discrete/tests/testDecisionTree.cpp +++ b/gtsam/discrete/tests/testDecisionTree.cpp @@ -20,11 +20,13 @@ // #define DT_DEBUG_MEMORY // #define DT_NO_PRUNING #define DISABLE_DOT -#include -#include #include + +#include #include +#include + #include using namespace boost::assign;