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

递归 逐层统计树形结构数据

阅读更多
将集合递归获取树形结构:


/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/

public void getReportVO(ArrayList<ReportVO> alist,String subjname,String pk,ArrayList<ReportVO> reportList,int count) throws BusinessException  {
ArrayList<String> str=new ArrayList<String>();
//不同级别用空格区分
for(int i=0;i<count;i++){
subjname="        "+subjname;

}

//根据pk获取末节点VO
getEndNodes( pk,  alist, str);
//存在下级节点 则查询出所有数据
if(str!=null&&!str.equals("")){
String[][] data=new String[str.size()][1];
for(int i=0;i<str.size();i++){
data[i][0]=str.get(i);

}
//根据项目名和末级节点得到数据
ReportVO reportvo=getEndNodeData(subjname,data);
reportList.add(reportvo);

}else{
//不存在下级节点
String[][] data=new String[1][1];
data[0][0]=pk;
ReportVO reportvo=getEndNodeData(subjname,data);
reportList.add(reportvo);
}

//递归统计节点数据
for(int i=0;i<alist.size();i++){
if(alist.get(i).getParentpk()!=null&&pk.equals(alist.get(i).getParentpk())){
ReportVO reportvo=alist.get(i);
String pk_costsubj_type = alist.get(i).getPk();
getReportVO(alist,reportvo.getSubjname(),pk_costsubj_type,reportList,count+1);

}
}
  }


/**
*
* 递归方法 查找末级节点
* @param pk 项目主键
* @param list 所有分类
* @param str   所有末级节点pk集合
*/

public void getEndNodes(String pk, ArrayList<ReportVO> list,ArrayList<String> str) throws BusinessException {


boolean flag = false;

for(int i=0;i<list.size();i++){
//查找该主键的子节点
if(list.get(i).getParentpk()!=null&&pk.equals(list.get(i).getParentpk())){
flag = true;
String pk_costsubj_type = list.get(i).getPk();
getEndNodes(pk_costsubj_type,list,str);
}
}
//如果是最末级
if(!flag){
str.add(pk);
}


}


分享到:
评论

相关推荐

    树形结构生成javaScript

    - `StatAction.java`, `IStatserviceimpl.java`, `MakeTree.java`, `MainAction.java`: 这些可能是Java文件,用于处理统计相关的业务逻辑,可能涉及到树形结构的生成和操作。 - `RandomImageServlet.java`: 通常...

    LinuxC编写的列出文件树形结构的程序

    4. **统计信息**:除了展示树形结构外,程序还提供了一项额外的功能——统计给定目录下包含的目录总数和文件总数。这不仅有助于用户了解目录结构的复杂程度,也为后续的数据分析提供了基础。 #### 技术细节解析 ...

    树的数据结构

    二叉树是每个节点最多有两个子节点的树形结构,这两个子节点分别称为左子节点和右子节点。二叉树具有以下特点: - 每个节点最多只有两个子节点。 - 左子树和右子树是有区别的,即二叉树是有序的。 - 不存在度大于2的...

    从tree中谋取数据

    综上所述,从tree中谋取数据涉及理解和操作树形结构,这涵盖了数据结构、遍历算法、递归、文件系统操作等多个IT领域的核心概念。具体到`Build.js`,可能需要结合其源码来深入了解其在实际项目中的应用。

    数据结构教学课件:第11-1讲 树和二叉树的遍历.pdf

    二叉树是一种特殊的树形结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。 二叉树的遍历是指按照特定顺序访问二叉树中的所有节点,确保每个节点只被访问一次。有四种常见的遍历方法: 1. 先序...

    数据结构(java版)习题解答

    ### 数据结构(Java版)习题解答概览 #### 第0章 Java程序设计基础 **实验0.1:哥德巴赫猜想**...- **解答**:二叉排序树是基于有序性的数据结构,而堆则是基于优先级的数据结构,它们在性质和应用场景上有显著区别。

    数据结构:二叉树子系统.docx

    二叉树是数据结构中的一个重要概念,它是一种特殊的树形结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在本题目中,我们被要求实现一个二叉树子系统,该系统包括以下功能: 1. **建立二叉树**:...

    二叉树的实验报告

    二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这篇实验报告主要探讨了二叉树的各种操作,包括创建、遍历和节点查询等。以下是对报告中涉及知识点的详细解释: 1. **...

    决策树算法及应用 ppt

    决策树是一种广泛应用于数据分析和机器学习的算法,它通过构建树形模型来做出决策或预测。在本PPT中,主要介绍了决策树算法及其在捕捉数据变化中的应用。 首先,传统挖掘方法通常只关注从静态数据库中提取规律,而...

    最小成本二分检索树_OBST

    4. 构建树结构:根据动态规划得到的信息,反向构造出OBST的树形结构。 在C++代码实现中,可以使用递归或迭代的方式来构建OBST。递归方法直接从叶子节点开始,向上合并子问题,而迭代方法则可以通过动态规划的状态...

    哈工大2014年数据挖掘期末试题

    - 无监督学习(Unsupervised-learning):在无标签数据上进行学习,主要发现数据中的隐藏结构。例如K-means聚类算法。 - 主动学习(Eager-learning):在训练开始前,模型试图通过查询学习尽可能多的信息。例如支持...

    求二叉树叶子结点个数和遍历中序

    ### 求二叉树叶子结点个数与中序遍历 在计算机科学领域,二叉树是一种常用的数据结构,广泛应用于各种算法设计中。本文档将详细介绍如何计算...这些基本概念和技术不仅适用于二叉树,也适用于其他类型的树形结构。

    数据分析与挖掘实验报告 (2).docx

    - **决策树方法**:决策树是一种常见的预测模型算法,通过构建树状结构来表示数据的分类过程。它具有解释性强、易于理解和实现的优点。 - **粗糙集方法**:粗糙集理论提供了一种处理不精确数据的方法,能够在不引入...

    第3章 第2节 树及二叉树(C++版)-2020-06-09.pdf

    树的遍历是处理树形结构的一种基本操作,它指的是按照一定的顺序访问树中的所有节点。在本章节中,我们将详细探讨四种常见的树遍历方式:先序遍历、后序遍历、层次遍历以及叶结点遍历。 - **先序遍历**:先访问根...

    北邮二叉树实验报告

    二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树通常用于构建搜索树、表达式树等。 2. **二叉树遍历**: - **前序遍历**(Preorder Traversal):先访问根节点,...

    实验三、二叉树的基本操作(内容清晰).pdf

    在逻辑上,二叉树可以被看作是一棵树形结构,其中每个节点包含一个元素(在实验中是`TElemType`类型,这里用`char`表示),以及指向其左子树和右子树的指针。二叉树的遍历有四种主要方法:先序遍历、中序遍历、后序...

    《程序设计实践》实验报告 - 二叉树-.pdf

    二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,如文件系统、编译器、搜索引擎等领域。 实验的主要目的是让学生掌握二叉树的...

    树和二叉树实验报告.doc

    1. **二叉树的结构特征**:二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,分为左子节点和右子节点。这种结构常用于表示具有两种可能选择的问题或数据的分叉关系。 2. **二叉树的存储结构**:主要有两...

    实验报告-实验121

    实验报告“实验121”主要探讨了如何利用孩子兄弟链表表示树结构,并通过先序和后序序列来构建二叉树。其中涉及的主要知识点...这些知识点是数据结构和算法领域的重要组成部分,对于理解和操作树形数据结构至关重要。

Global site tag (gtag.js) - Google Analytics