我的动态树构建【纯粹前后关系来做】

    之前用的是每次递归接入数据库,从而生成树,现在是想一次取数,就生成树。
我开始用的是表格前后关系,发现比较慢,原因是有几次遍历,所以效率较差,但我发现,
如果把生成的数据直接运用的js,通过js构造树,好像也可以。
   原来是通过这样构造的 
    0。interface TreeInterface  //添加子叶
    1。class     TreeObject      // 基类
    2。class     TreeLeaf  extends  TreeObject      //  叶子
    3。class     TreeNode extends  TreeObject  implements TreeInterface        //  枝支
    4。class     Tree      implements TreeInterface        //树干
 
  通过递归构造这棵树,这也要求表有严格的层次关系。 
  通过研究表的嵌套,我发现可以利用sql语句生成的结果直接构造出树来,用connect by prior id = parent_id,这个子句,生成的是类似于
 
 level 12  3 4 5
 1     
  2    
   4   
   3   
   5   

每一横向就是树型菜单的一个节点,无论是叶子还是树枝,

下面是某个实际生成树

 

 前后关系我用了一个函数来操作 

 

public void testLayer(int i){
int tempP = 0;
int tempC = 0;
int tempN = 0;
TreeBox tempTB1,tempTB2,tempTB3 ;
tempTB1 = (TreeBox)scountHM.get(String.valueOf(i-1));
if(tempTB1!=null){//如果不为第一节点 则直接取值,否则用默认的 0
tempP = tempTB1.getLevel();
}else{
tempP= 0;
}
tempTB2 = (TreeBox)scountHM.get(String.valueOf(i));
tempC = tempTB2.getLevel();
tempTB3 = (TreeBox)scountHM.get(String.valueOf(i+1));
if(tempTB3!=null){
tempN = tempTB3.getLevel();
}else{
tempN= 0;
} //向下不可能出现断层
//向上可能出现断层,所以要考虑断层次数从而 封闭表格
r_above = tempP-tempC;//可能结果为0(同层) >0(高层) -1(下一级)
r_down = tempC-tempN;//可能结果为0 n>0(结束多层) -1(下一级)
}

 再写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值