java使用递归实现树形结构
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java使用递归实现树形结构相关的知识,希望对你有一定的参考价值。
比如数据库如下
id name
640000000000 北京市
640100000000 昌平区
640101000000 霍营
640101001000 回龙观东大街
这样怎么用递归实现地区的树形结构
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的子节点,以此类推。
如果数据量特别大,是全国各地的地区规划代码,怎么办?
追答Notepad++,你可以用这个工具试试,我平时面对大量插入语句时就用它。这个你要不行的话,就得写存储过程了
参考技术A var zNodes=[id:0,pId:-1,name:"Aaaa",
id:1,pId:0,name:"A",
id:11,pId:1,name:"A1",
id:12,pId:1,name:"A2",
id:13,pId:1,name:"A3",
id:2,pId:0,name:"B",
id:21,pId:2,name:"B1",
id:22,pId:2,name:"B2",
id:23,pId:2,name:"B3",
id:3,pId:0,name:"C",
id:31,pId:3,name:"C1",
id:32,pId:3,name:"C2",
id:33,pId:3,name:"C3",
id:34,pId:31,name:"x",
id:35,pId:31,name:"y",
id:36,pId:31,name:"z",
id:37,pId:36,name:"z1123" ,
id:38,pId:37,name:"z123123123"
];
function treeMenu(a)
this.tree=a||[];
this.groups=;
;
treeMenu.prototype=
init:function(pid)
this.group();
return this.getDom(this.groups[pid]);
,
group:function()
for(var i=0;i<this.tree.length;i++)
if(this.groups[this.tree[i].pId])
this.groups[this.tree[i].pId].push(this.tree[i]);
else
this.groups[this.tree[i].pId]=[];
this.groups[this.tree[i].pId].push(this.tree[i]);
,
getDom:function(a)
if(!a)return ''
var html='\n<ul >\n';
for(var i=0;i<a.length;i++)
html+='<li><a href="#">'+a[i].name+'</a>';
html+=this.getDom(this.groups[a[i].id]);
html+='</li>\n';
;
html+='</ul>\n';
return html;
;
var html=new treeMenu(zNodes).init(0);
alert(html);
以上是关于java使用递归实现树形结构的主要内容,如果未能解决你的问题,请参考以下文章