public static void main(String[] args) {

List<Tree> trees = new ArrayList<Tree>();
int id = 1;

Tree t1 = new Tree(0, id++, "北京总部");
Tree t2 = new Tree(0, id++, "上海总部");
Tree t3 = new Tree(1, id++, "徐汇子机构");
trees.add(t1);
trees.add(t2);
trees.add(t3); Tree t4 = new Tree(1, id++, "子机构+");
Tree t5 = new Tree(4, id++, "子机构++");
Tree t6 = new Tree(5, id++, "子机构+++");
trees.add(t4);
trees.add(t5);
trees.add(t6); show(trees);
} public static void show(List<Tree> trees) {
for (int i = 0; i < trees.size(); i++) {
Tree t = trees.get(i);
if (t.parent == 0) {
StringBuffer blank = new StringBuffer();
t.show(trees, blank);
}
}
}public class Tree {
public Tree(int parent, int id, String str) {
this.parent = parent;
this.id = id;
this.str = str;
} int parent;// 树的根树
int id; 
String str; // StringBuffer blank = new StringBuffer();
public void show(List<Tree> trees, StringBuffer blank) {
blank.append("      ");
System.out.println(blank + str);
for (int i = 0; i < trees.size(); i++) {
Tree t = trees.get(i);
if (t.parent == id) {
t.show(trees, blank);
}
}
}

解决方案 »

  1.   

    如果是用oracle 数据库的话可以使用oracle提供的树形接口查询方法START WITH...CONNECT BY PRIOR
    来查询出树形结构的集合。  然后扔到前台页面内的dtree 中 就可以展示树形结构
      

  2.   

    嗯,我就是用oracle,怎么做,能具体说下么?ORACLE也不熟
      

  3.   

    你可以查下START WITH...CONNECT BY PRIOR这个语句的语法 他会递归返回你要的树形结构的集合,然后你在查下前台DTREE JS怎么用 把后台的结果集扔到DTREE里就可以了  我这没有源码
      

  4.   

     select LEVEL, name as name from t_product_type start with id in (select id from t_product_type where parentid='0')
     connect by prior id =parentid; 
    这是一个查询语句,返回结果集成树状结构!!!!
      

  5.   

    递归
    如果树是要显示在页面上,使用dtree
      

  6.   

    显示树的话,可以用jquery的treeview插件。一般都不会一次显示所有节点,而是显示根节点,然后当鼠标点到节点的时候,再用ajax获取子节点,这样就不用递归了。。
      

  7.   


    不用,就组成这样的数据 
    id:1, pId:0, name:"北京总部",
    id:11, pId:1, name:"北京总部的子机构",
    id:2, pId:0, name:"上海总部",
    id:22, pId:2, name:"上海徐汇",
      

  8.   

    Tree t1 = new Tree(0, id++, "北京总部");我就是要让这个构造方法里的参数,是动态的····
      

  9.   

    上网搜一下jquery的treeview的例子不能面对面交流真不好说。。
      

  10.   

    先获取到,机构的上级机构,在获取到机构的父机构,在获取到 父机构下的子机构
    循环
    for(int i=0;i<lst.size();i++){
    先获取到,机构的上级机构,在获取到机构的父机构,在获取到 父机构下的子机构 获取到机构的名称
    循环Tree t1 = new Tree(0, id++, "北京总部");
    }
      

  11.   

    用dtree 很好的一个js,可以实现从数据库读取形成树形菜单