private boolean hasChild();//是否有子类别
private List getChilds(Long categoryId);//取得子类别
现在想写一个函数,根据类别ID取得所有子类的ID,包括子类的子类,直到最底层,该怎么写,算法方面一直很弱,请高手赐教。

解决方案 »

  1.   

    public List listTree(List result,Item item){
    result.add(item);
    Set subs = item.getSubItems();
    if(subs!=null){
    for (Iterator it = subs.iterator(); it.hasNext();) {
    Item i = (Item) it.next();
    listTree(result,i);
    }
    }
    return result;
    }
      

  2.   

    树是由节点组成的。用递归的方法定义
    给个节点类。自己再扩展class Note {
        private Object element;
        private List<Note> childList;    public Note(Object element, List<Note> childList) {
            this.element = element;
            this.childList = childList;
        }
        
        public Object getElement(){
            return element;
        }
        public List<Note> getChildList(){
            return childList;
        }
    }
      

  3.   


    private main()
    {
       Long categoryId=5;
       List myList=new List();
       getAllChilds(categoryId,myList);
    }private boolean hasChild();//是否有子类别 
    private List getChilds(Long categoryId);//取得子类别 
    private void getAllChilds(Long categoryId,List myList)
    {   
       if(new Item(categoryId).hasChild())
       {
          List myChilds=getChilds(categoryId);
          for(int i=0;i<myChilds.size();i++)
          {
             myList.add(myChilds.get(i));
             getAllChilds(myChilds.get(i).getCategoryId(),myList)
          }
       }
    }