私は(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;
}
}