我有一个像(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;
}
}