多叉树 遍历

public class Category implements Serializable {

 

    private int categoryId;    
    private String categoryName;
    private String categoryComm;
    private int parId;

 

     }

public class CategoryNode {

     private Category category;
     private List childList=new ArrayList();

     public CategoryNode(){
          this.category=null;
     }
     public CategoryNode(Category category){
          this.category=category;
     }

public class CategoryTree {

 private CategoryNode root;
 
 public CategoryTree(){
  root=new CategoryNode();
 }
 public CategoryTree(Category category){
  root=new CategoryNode(category);
 }
 
 public static void main(String args[]){
  CategoryTree ct=createTree();
  String str=ct.iteratorTree(ct.getRoot());
  System.out.println(" "+str);
 }
 //0--name: 服务展示,1--name: 劳动就业,3--name: 招工信息,1--name: 少儿保险,1--name: 养老保险,0--name: 用户注册,0--name: 信息发布,5--name: 新闻中心,
 //终于显示出来了,三级类别可以显示,四级目录也可以显示在三级类别后面
 public static CategoryTree createTree(){
  List list=initList();
  CategoryTree ct=new CategoryTree();
  ct.getRoot().getChildList().add(0, new CategoryNode((Category)list.get(0)));
  ct.getRoot().getChildList().add(1, new CategoryNode((Category)list.get(1)));
  ct.getRoot().getChildList().add(2, new CategoryNode((Category)list.get(4)));
  
  ct.getRoot().getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(2)));
  ct.getRoot().getChildList().get(0).getChildList().add(1, new CategoryNode((Category)list.get(3)));
  ct.getRoot().getChildList().get(0).getChildList().add(2, new CategoryNode((Category)list.get(6)));
  
  ct.getRoot().getChildList().get(2).getChildList().add(0, new CategoryNode((Category)list.get(5)));
  
  ct.getRoot().getChildList().get(0).getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(7)));//三级类别
  ct.getRoot().getChildList().get(0).getChildList().get(0).getChildList().get(0).getChildList().add(0, new CategoryNode((Category)list.get(8)));
  return ct;
 }
 public CategoryNode getRoot() {
  return root;
 }
 public void setRoot(CategoryNode root) {
  this.root = root;
 }
 public static List initList(){
  List list=new ArrayList();
  Category c=new Category();
  c.setCategoryName("服务展示");
  c.setCategoryId(1);
  c.setParId(0);
  
  list.add(c);
  c=new Category();
  c.setCategoryId(2);
  c.setCategoryName("用户注册");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(3);
  c.setCategoryName("劳动就业"); //二级目录
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(4);
  c.setCategoryName("少儿保险");
  c.setParId(1);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(5);
  c.setCategoryName("信息发布");
  c.setParId(0);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(7);
  c.setCategoryName("新闻中心");
  c.setParId(5);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(8);
  c.setCategoryName("养老保险");
  c.setParId(1);
  list.add(c);
  c=new Category();
  c.setCategoryId(6);
  c.setCategoryName("招工信息");//三级目录
  c.setParId(3);
  list.add(c);
  
  c=new Category();
  c.setCategoryId(9);
  c.setCategoryName("单位招聘");//四级目录
  c.setParId(6);
  list.add(c);
  
  return list;
 }
 public String iteratorTree(CategoryNode treeNode){  
       
        StringBuilder sb = new StringBuilder();  
          
        if (treeNode != null) {  
              
           /* if ("root".equals(treeNode.getCategory().get)) {  
                sb.append(treeNode.getData().getKey() + ",");  
            }  */
              
            for (CategoryNode index : treeNode.getChildList()) {  
                  
                sb.append(index.getCategory().getParId()+"--name: "+index.getCategory().getCategoryName() + ",");  
                  
                if (index.getChildList() != null && index.getChildList().size() > 0 ) {  
                      
                    sb.append(iteratorTree(index));  
                      
                }  
            }  
        }  
          
        return sb.toString();  
    }  
}

你可能感兴趣的:(数据结构)