i have written this tree class for a familytree
now i need a search method to find a node in my tree
its a n-ary tree that each node can have 0 to n children
the search method can search for a node or for two names includes node name and his/her father name
plz help me
public class FamilyNode {
public String name;
public String sex;
public FamilyNode Father;
public FamilyNode Mother;
public FamilyNode Spouse=null;
public String status="alive";
public int population;
public ArrayList<FamilyNode> children=new ArrayList<FamilyNode>() ;
public FamilyNode(String name1,String sex1){
this.name=name1;
this.sex=sex1;
this.population=this.children.size()+1;
}
public void SetParents(FamilyNode father,FamilyNode mother){
this.Father=father;
this.Mother=mother;
}
public void SetHW(FamilyNode HW){
this.Spouse=HW;
}
public void AddChild(FamilyNode child){
child.SetParents(this.Father, this.Spouse);
this.children.add(child);
this.Spouse.children.add(child);
}
public int Number (){
int number_of_descendants = this.population;
if(this.Spouse!=null) number_of_descendants++;
for(int index = 0; index < this.children.size(); index++)
number_of_descendants = number_of_descendants+ this.children.get(index).Number();
return number_of_descendants;
}
}
Have a look at Tree Traversal algorithms. This article covers them pretty well (using recursion and dequeues)
Here is one way of traversing your tree
To traverse all your tree, do the following:
Note that this method is using recursion. If your tree is very big then I suggest you go for using queues instead as recursion might end up in a StackOverFlow exception.