Person& findPerson(Person* root, string child_name){
if(root == nullptr) throw exception();
else if(root->name.compare(child_name) == 0) return *root;
else{
if(root->father == nullptr)return findPerson(root->mother, child_name);
else if(root->mother == nullptr)return findPerson(root->father, child_name);
else {
return findPerson(root->mother, child_name);
return findPerson(root->father, child_name);
}
}
}
family::Person::Person(string person_name){
name = person_name;
father = nullptr;
mother = nullptr;
};
family::Person::Person(string person_name, bool is_male){
name = person_name;
father = nullptr;
mother = nullptr;
isMale = is_male;
};
// TREE
family::Tree::Tree(string name){
root = new Person(name);
};
family::Tree& Tree::addFather(string child, string father){
Person& child_found = findPerson(root, child);
Person* f = new Person(father, true);
child_found.father = f;
return *this;
};
family::Tree& family::Tree::addMother(string child, string mother){
Person& child_found = findPerson(root, child);
Person* f = new Person(mother, false);
child_found.mother = f;
return *this;
};
int main(){
Tree t("X");
t.addFather("X","Y");
t.addMother("X", "Z");
t.addFather("Z", "W");
t.addFather("Y","F");
return 0;
}
I trying to implement binary tree with persons. Any person got father and mother. In my main() function it works good until I add person to my first "X"s father. My main gets Aborted (core dumped) error on the 4th addFather("Y","F") call, and I cant realize what is my fault.
Please login or Register to submit your answer