void SearchTree::calculateBranchAndDeadEnds(vector<GameState*> states){ int j = 0; for(vector<GameState*>::iterator it = states.begin(); it != states.end(); it++){ GameState* state = *it; j++; cout << j << "/" << states.size() << endl; GameState* cloneState = state->clone(); for(int i = 0; i < state->solvedStep; i++){ Node* node = new Node(cloneState->clone()); vector<Node*> leaf = this->expand(node); state->nBranch += leaf.size(); state->nNode += 1; state->nDeadEnd += node->state->nDeadEnd; for(vector<Node*>::iterator it2 = leaf.begin(); it2 != leaf.end(); it2++){ Node* n = *it2; delete n; n = NULL; } delete node; node = NULL; int step = (state->solvedStep - (cloneState->countBoard() / state->crossOut)); Grid a1 = state->solvedSequence[step][0]; Grid a2 = state->solvedSequence[step][state->crossOut - 1]; GameControl::getInstance()->operation(cloneState, a1, a2); } delete cloneState; cloneState = NULL; } }