0

私は(BST)のような構造体を持っています:

typedef struct node {
  char* name;  
  int age;
  struct node* left;       
  struct node* right;      
} node_t;

そして、次のような関数を作成する必要があります。char* getSameAge(node_t* s, int age)これは、name1:name2:....nameN のような文字列を返します。ノードは == age です。

私はこのソリューションを作成しました。テストでは機能しますが、valgrind を使用するとエラーが発生します...誰かが私にアドバイスや代替/より良い解決策を教えてくれますか?!

void visitTree(node_t* s,char buf[N],int age) {
  if(s!=NULL) {
    visitTree(s->left,buf,age);
    if(s->age == age) {
      if(strlen(buf) == 0) strcpy(buf,s->name);
      else{
       strcat(buf,s->name);
       if(s->left != NULL || s->right != NULL) strcat(buf,":");
      }
    }
    visitTree(s->right,buf,age);
  }
}

char* getSameAge(node_t* s, int age) {

  char buf[N];
  visitTree(r,buf,age);
  if(strlen(buf) == 0) {
    return NULL;
  }
  else {
    char *aux = malloc(strlen(buf));
    strcpy(aux,buf);
    return aux;
  }
}
4

1 に答える 1