52,797
社区成员
发帖
与我相关
我的任务
分享
//由ResTree[]产生以<ul><li>嵌套成的树,可以供jquery.treeview使用
public String getTreeView(ResTree[] roots){
StringBuffer list = new StringBuffer(6500);
if(roots != null){
ResTree[] nodes;
ResTree node;
Stack stack = new Stack();
stack.push(null);//标记同一层的子结点遍历完,可以加</ul>结束
for(int i = roots.length -1; i >= 0; i--){
stack.push(roots[i]);
}
list.append("<ul id='tree' class='treeview filetree'>");
while(!stack.empty()){
node = (ResTree)stack.pop();
while(node == null && !stack.empty()){
//说明已经遍历完同一层的结点
list.append("</ul></li>");
node = (ResTree)stack.pop();
}
if(stack.empty()){
break;
}
nodes = node.getChild_list();
if(nodes != null && nodes.length > 0){
//有孩子结点要遍历,把结点存放到堆栈中,并加入<ul>表示另外开启一层结点
stack.push(null);
list.append("<li><a href='javascript:void(0);' >").append(node.getName()).append("</a><ul>");
for(int i = nodes.length - 1; i >= 0; i--){
stack.push(nodes[i]);
}
}else{
//无孩子结点
list.append("<li><a href='javascript:void(0);' >").append(node.getName()).append("</a></li>");
}
}
list.append("</ul>");
}
return list.toString();
}