In Java: Create a Data Structure to store a forward looking Family Tree. One Fam
ID: 3840220 • Letter: I
Question
In Java:
Create a Data Structure to store a forward looking Family Tree. One Family Tree can have many nodes. Links going back to Grand Parents not necessary. The Data Structure should have following methods:
Add(p : Person) • Adds a new person to Family Tree
AddChild(parent : Person, child : Person) • Adds a child to an existing person in Family Tree
AddPartner(p : Person, partner : Person) • Add a partner to an existing person in Family Tree
Display(p : Person) • Displays list of all the persons related to given person
Person Class
Person : Class
Name: string
DOB: date
DOD: date
Gender: bool (True: Male, False: Female)
Partners: ArrayList<Person>
Children: ArrayList<Person>
Sample Display Format
Starting Person : John Doe (Male)
- Mary Jane (Partner, Female)
-- Jim Doe (Child, Male)
-- Jennifer Doe (Child, Female)
--- Tim Clark (Partner, Male)
--- Jesse Clark (Child, Female)
- Nicole Doe (Partner, Female)
-- Nick Jonah (Partner, Male)
-- Nancy Jonah (Child, Female)
Explanation / Answer
Hope the below code helps. Feel free to ask if there's any doubt.
import java.util.*;
public class Family
{
private Person root;
public Family(String rootname, Date rootdob, Date rootdod, Boolean rootgender) {
root = new Person();
root.name = rootname;
root.dob = rootdob;
root.dod = rootdod;
root.gender = rootgender;
root.partners = new ArrayList<Person>();
root.children = new ArrayList<Person>();
}
public static class Person {
private String name;
Date dob;
Date dod;
Boolean gender;
private List<Person> partners;
private List<Person> children;
}
private Person search(Person P, Person node){
if(node != null){
if(node.equals(P)){
return node;
} else {
Person found;
int i=0;
while(found==null && i<node.partners.size())
{
found = search(P, node.partners.get(i));
i++;
}
int i=0;
while(found ==null && i<node.children.size())
{
found = search(P, node.children.get(i));
i++;
}
return found;
}
} else {
return null;
}
}
public void add (Person p)
{
root.partners.add(p);
}
public void addPartner(Person p, Person partner)
{
Person foundNode = search(p,root);
foundNode.partners.add(partner);
}
public void addChild(Person parent, Person child)
{
Person foundNode = search(parent,root);
foundNode.children.add(child);
}
public void display(Person p)
{
if(p != null){
System.out.println(p.name);
int i=0;
while(i<p.partners.size())
{
display(p.partners.get(i));
i++;
}
int i=0;
while(i<p.children.size())
{
display(p.children.get(i));
i++;
}
}
else {
System.out.println("No such person exists!");
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.