一棵树,层次不限,深度可以不一,只要设定好叶子节点的权重,得分,就可以一次求得每一个节点的得分,当然,每一个节点的权重也是要提前设定的:
/**
* 递归计算当前节点的得分=子节点的加权得分
* @param curr_folder_id
* @return
*/
public double calNodeScore(String curr_folder_id){
Dao dao = new DaoImp();
double gs = 0;//当前节点的加权结果,若当前节点包括叶子和非叶子节点
try{
String pfkSQL = "select folder_id,isleaf,weight,score from estimate_card where status=1 and par_folder_id="+curr_folder_id;
List ll = dao.getResultList(pfkSQL);
for(int ii = 0;ii<ll.size();ii++){//当前节点的子节点,包括可能的叶子节点和非叶子节点
String child_folder_id = (String)((Map)ll.get(ii)).get("FOLDER_ID");
String isleaf = (String)((Map)ll.get(ii)).get("ISLEAF");
String weight = (String)((Map)ll.get(ii)).get("WEIGHT");
if("0".equals(isleaf)){
//当前节点的非叶子子节点的计算结果
double ret = calNodeScore(child_folder_id);
//还要和兄弟节点的结果进行加权
gs += (ret*Double.valueOf(weight));
}else{
//当前节点的叶子子节点
double s = Double.valueOf((String)((Map)ll.get(ii)).get("SCORE"));
double w = Double.valueOf((String)((Map)ll.get(ii)).get("WEIGHT"));
gs += s*w;
}
}
//更新当前节点的加权得分
String update = "update estimate_card set score="+gs+" where folder_id="+curr_folder_id;
dao.update(update);
}catch(Exception e){
e.printStackTrace();
}finally{
dao.closeconn();
}
return gs;
}
另外,算法很需要实际业务模型的理解,还有参考,还需要实际的大概逻辑
相关推荐
为了解决现有算法无法根据不同节点对网络流量传输具有不同重要性选择流量测量点的问题,提出了一种基于节点加权的网络流量测量点选择算法。该算法首先通过节点关键度对节点进行权重分配,之后使用节点加权的关联矩阵...
基于拓扑势节点加权的节点重要性评估方法,于少然,胡绍海,基于拓扑势的节点重要性评价算法可以更好的反映出节点之间的相互依赖关系,从网络拓扑结构全局来分析节点的重要性。但不足之处在
动态添加树节点,链接数据库 希望对新手有所帮助
VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点...
网页上的树节点的制作源代码,生成多个树节点
vc6.0,实现树形结构任意拖动树节点以及树节点之间的箭头绘制。非常好用
基于节点加权和边加权的重分形研究.pdf
树节点全部选中 选中父节点子节点自动选中,选中子节点父节点也选中 ASP.NET
对树节点的增删改查,对树节点管理,并清楚写入相关注释
ZTree树节点的增删改及本树或者本树与其他树节点之间的拖拽
java无序list数据,可直接汇总,可汇总并转为树形结构数据,可直接作为公用树节点工具类使用,调用汇总类可根据实际情况修改文件内Service方法使用
android树节点例子,页面展示效果,选择根节点展示子节点
前端开发树节点PC端
java实现树父节点递归获取树子节点 工具类,以后再项目中直接用即可
拖拉树节点的例子拖拉树节点拖拉树节点的例子的例子
C#Tree View右键菜单,树节点编辑,增加节点,删除节点,复制粘贴节点
为什么 Xgboost中树的叶节点得分可以用来衡量树的复杂度? - 知乎1
1.完整的包命名空间 2.自定义header footer 3.动态添加节点/动态删除节点/动态...15.支持插件开发,可以为树添加更多功能,例如下拉框树,选择框树,可编辑内容的树,拖动节点等都可以很容易自己实现或者根据第三方js实现
mfc 空间 CTree 的 树节点 相互交换 右键可上移或下移
c# treeview 实现树节点上下移动,点击上移按钮,实现树节点上移动,点击下移按钮,实现树节点向下移动。