I have to implement a tree programming here.  What I mean by tree programming is I have data stored in tree format.  I have a parent object which will have child objects of same type the level of depth can go any long:I am able to store objects in tree format and also able to display properly.  I am facing problems when I have to filter some child nodes based on some conditions:I have two question:is this code fine?is there anything wrong with design?Plus, how can I handle removing child node in a tree where the child can be in any place?package menu;import java.util.List;public class Links{private String nodeName;     private List<Links> children;     public List<Links> getChildren(){        return children;     }     public void setChildren( List<Links> children ){        this.children = children;     }     public String getNodeName(){        return nodeName;     }     public void setNodeName( String nodeName ){        this.nodeName = nodeName;     }}  package menu;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.chartis.gp.support.util.BrokerSupportUtil;import com.chartis.gp.support.vo.Links;import com.chartis.kernel.user.UserVO;import com.chartis.kernel.utils.Utils;public class Utility{    /* IN this class NavModel,CModel,CNode are some dummy classes     * which help us read contents form some resources which are stored in dummy format     * as Example of tree format stored data below is the example      *    tree     *       child1     *       child2     *       child3      *              child3-1     *                       child:q     *                       child:r     *                               child:a     *              child3-2     *                   *       child4     */    private static void populateChildLinks(NavModel navModel, Object objectNode, Links parent ){        try{            List<Links> childLinks = new ArrayList<Links>();            Iterator it = navModel.getChildren( objectNode );            while( it.hasNext() ){                NavNode node = (NavNode) it.next();                CNode contentNode = node.getContentNode();                Links links = new Links();                links.setNodeName( contentNode.getNodeName() );                childLinks.add( links );                if( navModel.hasChildren( node ) ){                    populateChildLinks( node, links );                }            }            parent.setChildren( childLinks );        }        catch( Exception e ){        }    }    private static Links createCategoryLinks(String categoryLinkName){        Links categoryLinks = new Links();        categoryLinks.setNodeName( categoryLinkName );        return categoryLinks;    }    public static Links setupLinks(String categoryLinkName,String name) {        Links categoryLinks=null;        CModel contentModel = new CModel();        NavModel navModel = new NavModel();        categoryLinks = Utility.createCategoryLinks( categoryLinkName);        Object objectNode = contentModel.getLocator().findByUniqueName(name);        if( objectNode != null ){            if( navModel.hasChildren( objectNode ) ){                populateChildLinks( navModel,objectNode, categoryLinks );            }        }    }              // This is where i am facing issue once i get list of links of childs         // i have to delete how can i find that particular child in the list        // do i have to iterate through all the links and delete or  which         // way is better    private static void filterLinks( Links parentNode,            List<Links> childNodeList ){        List<Links> filteredResourceList = new ArrayList<Links>();        if(  childNodeList!=null ){            Iterator<Links> childNodeIt = childNodeList.iterator();            while( childNodeIt.hasNext() ){                Links childNode = (Links) childNodeIt.next();                if(childNode.getChildren().size() >0 ){                    filterLinks( childNode, childNode.getChildren() );                }                boolean removeNode = filterContents( childNode);                if(! removeNode ){                    filteredResourceList.add( childNode );                }            }        }        Iterator<Links> filteredResourceIt = filteredResourceList.iterator();        while( filteredResourceIt.hasNext() ){            Links childNode = (Links) filteredResourceIt.next();            parentNode.getChildren().remove( childNode );        }    }    // Let us consider this as some dummy method which returns true or false based on some conditions    private static boolean filterContents( menu.Links childNode ){        return false;    }}package menu;public class TreeDisplay{    public static void main( String[] args ){        Links link = Utility.setupLinks( SomeName, ResiyrbceBane );        Utility.filterLinks( link, link.getChildren() );    }}Once I have a list of objects, I have to delete since it is tree object.  How canI delete a child?  I know I have to do a recursive search, but how can I do that?  Which way will I delete?  In the above tree structure where I have commented in the code, how can I delete child:q?
Recursive search to delete n'th child in tree
java;algorithm;recursion;tree