本文目錄一覽:
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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/198440.html