如何使用二叉树的排列

时间:2016-11-29 06:50:30

标签: c tree binary-tree

我不明白为什么我的代码会打印字符串double。

void find_first_index(char* str,char*strcopy_0, char* strcopy_1){
   char* find_x;

   find_x = strchr(str,'x');
   //set x equals to 0
   *find_x='0';
   //call recursive
   strcpy(strcopy_0, str);

   *find_x = '1';
   strcpy(strcopy_1,str);

}
void binary_permute(char* str){

    char strcopy_0[100];
    char strcopy_1[100];

    //base case //if no x exists in str
    if(strchr(str, 'x') == NULL){
        printf("%s\n", str);
    }

    //if count is not zero
    else{
        //we need to loop through the string again
        find_first_index(str, strcopy_0, strcopy_1);
        binary_permute(strcopy_0);
        binary_permute(strcopy_1);
        printf("%s\n", strcopy_0);
        printf("%s\n", strcopy_1);


    }

}

输入0x0x0将导致

  

00000

     

00010

     

00000

     

00010

     

01000

     

01010

     

01000

     

01010

而不是仅打印一次

  

00000

     

00010

     

01000

     

01010

我最好的客人是我在一个函数中进行了两次递归调用太多。 有没有其他方法可以做到这一点?

0 个答案:

没有答案