MoveTree * generateAll(char * state, int n_moves) { char*movelist = malloc(sizeof(char) * (n_moves + 1)); movelist[0] = '\0'; MoveTree *root = MoveTree_create(state, movelist); generateAllHelper(root,n_moves,state,movelist,0); free(movelist); return root; }
MoveTree * MoveTree_insert(MoveTree * node, const char * state, const char * moves) { if(node==NULL) return MoveTree_create(state,moves); int cmp=strcmp(state,node->state); if(cmp==0){ if(strlen(moves)<strlen(node->moves)){ free(node->moves); node->moves=strdup(moves); } } else if(cmp<0) node->left=MoveTree_insert(node->left,state,moves); else if(cmp>0) node->right=MoveTree_insert(node->right,state,moves); return node; }