`
zengshaotao
  • 浏览: 752666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

计算树形数据结构的节点值

 
阅读更多

currlist = 全部的对象数据集;

List<LaborcostReport> notYeaflist = new ArrayList<LaborcostReport>();

        List<LaborcostReport> yeaflist = new ArrayList<LaborcostReport>();

        

        //分离叶子和非叶子节点

        currlist.forEach(qc->{

if(!"1".equals(qc.getYeafFlag())){

notYeaflist.add(qc);

}else{

yeaflist.add(qc);

}

});

        

        //算出非叶子节点的最大深度

        int treeDepth = 1;

        for(int i=0;i<notYeaflist.size();i++){

LaborcostReport lr = notYeaflist.get(i);

String nodePath = lr.getAccessors();

if(nodePath.split(",").length>treeDepth){

treeDepth = nodePath.split(",").length;

}

}

        

        //从非叶子树的最深处开始计算,计算非叶子节点的合计值

        for(int j = treeDepth; j>0 ;j--){

        for(int i=0;i<notYeaflist.size();i++){

    LaborcostReport lr = notYeaflist.get(i);

    String nodePath = lr.getAccessors();

    if(nodePath.split(",").length == j){

    //计算非叶子节点的值(所有的子节点相加)

    String menuId = lr.getMenuId();

    int tmp = currlist.size();

    for(int k = 0;k< tmp ;k++){

    LaborcostReport childNode = currlist.get(k);

    if(menuId.equals(childNode.getParentId())){

    //如果有多个节点,需要先取出,再相加

    lr.setManageIncomeYear(Arith.add(lr.getManageIncomeYear(),childNode.getManageIncomeYear()));

   

    }

    }

    }

    }

        }

分享到:
评论

相关推荐

    数据结构值排序算法.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    数据结构演示软件

    数据结构算法演示(Windows版) 使 用 手 册 一、 功能简介 本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法...

    《二叉树及应用》 数据结构中二叉树使用

    [问题描述]建立一个二叉树,并对其进行4种遍历(前中后层)。 [要求] 使用递归和非递归,计算二叉树中节点的个数,树的深度等。...二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构

    用c描述的数据结构演示软件

    数据结构算法演示(Windows版) 使 用 手 册 一、 功能简介 本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行...

    数据结构(C++)有关练习题

    在计算机科学发展过程中,早期数据结构教材大都采用PASCAL语言为描述工具,后来出现了采用C语言为描述工具的教材版本、至今又出现了采用C++语言为描述工具的多种教材版本。本教实验指导书是为已经学习过C++语言的...

    二叉排序树与平衡二叉树的实现

    本程序中的数据采用“树形结构”作为其数据结构。具体采用的是“二叉排序树”。 二叉排序树(又称二叉查找树):(1)若左子树不空,则左子树上所有节点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有...

    ACM算法模板和pku代码

    数据结构 闭散列法整数hash 开散列法整数hash 字符串hash 堆 二维树状数组 Trie树 二叉查找树 线段树 RMQ LCA+RMQ SB-Tree 数论 生成紧凑素数表 分解质因子 最大公约数 a^b mod n 扩张欧几里德算法 ...

    数据挖掘技术分析.doc

    3 数据挖掘的主要方法 1) 决策树法 决策树是一种对实例进行分类的树形结构,由节点和有向边组成。节点的类型 有2种:内部节点和叶子节点。内部节点一般表示一个特征或属性的测试条件,叶子节点 则表示一个分类。 ...

    大数据下的智能数据分析技术研究.pdf

    况发生概率的基础上,通过构成决策树来 求取净现值的期望值大于等于零的概率, 评价项目风险,判断其可行性的决策分析 方法,是直观运用概率分析的一种图解法, 它是建立在信息论基础之上对数据进行分 类的一种方法。 ...

    数据库设计与应用.pdf

    数据结构:逻辑结构:级 2 数据之间存在的逻辑关系。如表、树、图、数组… 物理结构:数据在计算机内的存储方式,如顺序方式、链接方式… 数据库:人们收集并抽取出一个应用所需要的大量数据之后,应将其保存起来以...

    软件工程知识点

    它使用矩形来表示系统中的子系统或功能模块,使用树形连线结构来表达系统所具有的功能层级关系。 (2)数据流模型。用于描述系统对数据的加工过程,其图形符号是一些具有抽象意义的逻辑符号,主要的图形符号包括:...

    ACM巨全模板 .pdf

    数据结构: 1.RMQ (区间最值,区间出现最大次数,求区间gcd) 2.二维RMQ求区间最大值 (二维区间极值) 3.线段树模板(模板为区间加法) (线段树染色) (区间最小值) 4.线性基 (求异或第k大) 5.主席树(静态求区间第k小) ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例031 用Switch语句根据消费金额计算折扣 41 实例032 判断用户输入月份的季节 42 2.4 循环控制 43 实例033 使用while与自增运算符循环遍历 数组 43 实例034 使用for循环输出杨辉三角 43 实例035 使用嵌套循环在...

Global site tag (gtag.js) - Google Analytics