我的表的字段就是这些: id int auto_increament parentid int//父结点的id isleaf boolean//是否为叶节点 nodename varchar//节点名称 comments varchar//节点提示 它是一个开放式的结构,能无限制的增加。 希望大侠们给写个算法,或是出个什么主意!! 再次期待!!!!
给你段伪代码,自己翻译去 public java.util.List buildTree(String rootid){ List result = new ArrayList(); Element root = findById(rootId); //这里的Element就表示你表对应的vo result.add(root); //把自己加入到列表第一位 if(!root.isLeaf()){ //判断是否叶子节点,如果时就不用再深入了 result.add(buildTree(root.getId())); //递归加入子节点 } return result; }
服务端利用递归构造树型数据: public List getCustomerList() { List orderList = new ArrayList(); for (int i = 0; i < customerList.size(); i++) { if (!orderList.contains(customerList.get(i))) { constructCustomerTree(orderList, (Customer)customerList.get(i), customerList); } } return orderList; }public void constructCustomerTree(List nodeList, Customer item, List customerList) throws Exception { nodeList.add(item); Iterator funcIt = customerList.iterator(); Customer funcItem = null; String superiorId = null; String itemId = null; while (funcIt.hasNext()) { funcItem = (Customer)funcIt.next(); if (funcItem.getCustomer() == null) { superiorId = "0"; break; } else { superiorId = Tools.trim(funcItem.getCustomer().getId()); } itemId = Tools.trim(item.getId()); if (superiorId.equals(itemId)) { constructCustomerTree(nodeList, funcItem, customerList); } } }
id int auto_increament
parentid int//父结点的id
isleaf boolean//是否为叶节点
nodename varchar//节点名称
comments varchar//节点提示
它是一个开放式的结构,能无限制的增加。
希望大侠们给写个算法,或是出个什么主意!!
再次期待!!!!
public java.util.List buildTree(String rootid){
List result = new ArrayList();
Element root = findById(rootId); //这里的Element就表示你表对应的vo
result.add(root); //把自己加入到列表第一位
if(!root.isLeaf()){ //判断是否叶子节点,如果时就不用再深入了
result.add(buildTree(root.getId())); //递归加入子节点
}
return result;
}
public List getCustomerList() {
List orderList = new ArrayList();
for (int i = 0; i < customerList.size(); i++) {
if (!orderList.contains(customerList.get(i))) {
constructCustomerTree(orderList, (Customer)customerList.get(i), customerList);
}
}
return orderList;
}public void constructCustomerTree(List nodeList, Customer item, List customerList) throws Exception {
nodeList.add(item);
Iterator funcIt = customerList.iterator();
Customer funcItem = null;
String superiorId = null;
String itemId = null;
while (funcIt.hasNext()) {
funcItem = (Customer)funcIt.next();
if (funcItem.getCustomer() == null) {
superiorId = "0";
break;
} else {
superiorId = Tools.trim(funcItem.getCustomer().getId());
}
itemId = Tools.trim(item.getId());
if (superiorId.equals(itemId)) {
constructCustomerTree(nodeList, funcItem, customerList);
}
}
}