Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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!");
}
}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote