日期:2014-05-17  浏览次数:20797 次

递归方法计算树节点级别
有一个树形菜单:
1 XX0
1.1 XX1
1.1.1 XX2
1.1.1.1 XX3
1.2 XX4
1.2.1 XX5
1.2.2 XX6
1.2.2.1 XX7
2 XX8
2.1 XX9
2.1.1 XX10
...

----------------------------------------------------------------

我写了一个递归的方法:
private void test(...){
    //查询数据
    for(查询出来的数据){
       test(...);
    }
}

我想要得到所有树节点是几级节点。
比如:1.1是2级节点    1.1.1是3级节点    1.1.1.1是4级节点
把级别都输出来。
------解决方案--------------------
用变量记录等级和次数,注意回归条件
------解决方案--------------------
给你一个用三大框架实现的递归树形菜单。参考一下,不懂得地方可以问我、

public List<UserMenuTree> syslogin(Purview purview){
List<UserMenuTree> nodes=Lists.newArrayList();
for(Purview parent:purview.getChildren()){
UserMenuTree parentNode=new UserMenuTree();
parentNode.setUrl(parent.getPurUrl());
parentNode.setId(parent.getId());
parentNode.setText(parent.getPurName());
parentNode.setIcon("/ebike/bike/"+parent.getPurIco());
parentNode.setChildren(syslogin(parent));
parentNode.setLeaf(false);
if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
nodes.add(parentNode);
}
return nodes;
}

------解决方案--------------------
引用:
Quote: 引用:

给你一个用三大框架实现的递归树形菜单。参考一下,不懂得地方可以问我、

public List<UserMenuTree> syslogin(Purview purview){
List<UserMenuTree> nodes=Lists.newArrayList();
for(Purview parent:purview.getChildren()){
UserMenuTree parentNode=new UserMenuTree();
parentNode.setUrl(parent.getPurUrl());
parentNode.setId(parent.getId());
parentNode.setText(parent.getPurName());
parentNode.setIcon("/ebike/bike/"+parent.getPurIco());
parentNode.setChildren(syslogin(parent));
parentNode.setLeaf(false);
if(parentNode.getChildren().size()==0) parentNode.setLeaf(true);
nodes.add(parentNode);
}
return nodes;
}


我要的是级别。

parentNode.setChildren(syslogin(parent));运行到这的时候,循环一次就是一级,直到循环完毕。
------解决方案--------------------
树形菜单,有个必要的因素就是parent node父节点,除非你这个是有规律的。

这种问题你是要做权限管理方面的东西吗?这个在建表的时候给tab_menu加个parent_id字段来记录父节点,然后循环查询。