本文目录一览:
java使用递归实现树形结构
insert tb_menu(id, name, parent) (640000000000,北京市 ,0);
insert tb_menu(id, name, parent) (640100000000,昌平区 ,1);
insert tb_menu(id, name, parent) (640101000000,霍营 ,2);
insert tb_menu(id, name, parent) (640101001000, 回龙观东大街,3);
添加一个节点属性, 根据数据不同代表的地位不同,0就代表父节点 ,1是0的子节点,2是1的子节点,以此类推。
Java递归如何正确输出树形菜单
首先我们要建立树节点的类:
[java]
view
plain
copy
package
com.tree;
public
class
Node
{
private
Integer
id;
private
Integer
parentId;
private
String
name;
private
String
link;
public
Integer
getId()
{
return
id;
}
public
void
setId(Integer
id)
{
this.id
=
id;
}
public
Integer
getParentId()
{
return
parentId;
}
public
void
setParentId(Integer
parentId)
{
this.parentId
=
parentId;
}
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
this.name
=
name;
}
public
String
getLink()
{
return
link;
}
public
void
setLink(String
link)
{
this.link
=
link;
}
}
输出树形菜单类:
[java]
view
plain
copy
package
com.tree;
import
java.util.ArrayList;
import
java.util.List;
public
class
Tree
{
private
StringBuffer
html
=
new
StringBuffer();
private
ListNode
nodes;
public
Tree(ListNode
nodes){
this.nodes
=
nodes;
}
public
String
buildTree(){
html.append("ul");
for
(Node
node
:
nodes)
{
Integer
id
=
node.getId();
if
(node.getParentId()
==
)
{
html.append("\r\nli
id='"
+
id
+
"'"
+
node.getName()+
"/li");
build(node);
}
}
html.append("\r\n/ul");
return
html.toString();
}
private
void
build(Node
node){
ListNode
children
=
getChildren(node);
if
(!children.isEmpty())
{
html.append("\r\nul");
for
(Node
child
:
children)
{
Integer
id
=
child.getId();
html.append("\r\nli
id='"
+
id
+
"'"
+
child.getName()+
"/li");
build(child);
}
html.append("\r\n/ul");
}
}
private
ListNode
getChildren(Node
node){
ListNode
children
=
new
ArrayListNode();
Integer
id
=
node.getId();
for
(Node
child
:
nodes)
{
if
(id.equals(child.getParentId()))
{
children.add(child);
}
}
return
children;
}
}
java递归遍历某个菜单下的菜单树
不太清楚你这个Menu是哪来的类,不过如果上文你的程序能执行的话,说明menu.getChilds()是个集合,应该带有size()的函数。你可以取出menu.getChilds()的大小,再从头到尾遍历它。
int count=menu.getChilds().size();
for(int i=0;icount;i++)
{
showMenu( ((Menu)menu.getChilds().get(i)) , 0 );
//我估计这些children是个list,可以顺序遍历;但也有
//部分可能是set,那样就得用iterator了。
}
java根据数据库生成菜单(递归)
不需要递归用一个特殊字符的算法来处理
比如
基本信息 1000
酒店管理 10001000
服务商管理 10002000
产品信息 2000
导游管理 20001000
物品管理 20002000