void permuteHelper ( int * array , int len , int ind ) { // TreeNode * root = NULL ; int check ; if ( ind == len ) { check = isStackSortable( array, len) ; if(check == 1) { TreeNode * root = Tree_build(array, len) ; Tree_printShape(root) ; // printPermutation ( array , len ); Tree_destroy(root) ; } } int pos ; for ( pos = ind ; pos < len ; pos ++) { swap (& array [ pos ] , & array [ ind ]); permuteHelper ( array , len , ind + 1); swap (& array [ pos ] , & array [ ind ]); } }
void permutehelper(int * array, int index, int length) { if(index == length) { int sortable = isStackSortable(array, length); if(sortable == TRUE) { TreeNode * root = Tree_build(array, length); Tree_printShape(root); Tree_destroy(root); return; } else {return;} } int pos; for(pos = index; pos < length; pos++) { swap(&array[pos], &array[index]); permutehelper(array, index + 1, length); swap(&array[pos], &array[index]); } }