package org.wyh;
import java.util.ArrayList;
public class GetNodesLeaves {
static ArrayList<String> del = new ArrayList<String>();// 临时集合存要删除的node
/*
* 取要要删除的node集合
*/
public void getDelNodes(ArrayList<String> src, String node, int len) {
ArrayList<String> tmp = new ArrayList<String>();
for (int i = 0; i < src.size(); i++) {
if (src.get(i).startsWith(node)) {
/*
* 递归取得所有node及其叶子
*/
if (len > 0) {
getDelNodes(src, src.get(i), len - 1);
} else {
tmp.add(src.get(i));
}
}
}
for (int j = 0; j < tmp.size(); j++) {
/*
* 如果存在node的叶子,则把叶子的node放入要删除的的集合中
*/
if (tmp.size() > 1) {
del.add(tmp.get(0));
}
}
}
/*
* 取得给定node的所有叶子
*/
private void getLeaf(ArrayList<String> src, String node, int len) {
getDelNodes(src, node, len);
for (int j = 0; j < del.size(); j++) {
src.remove(del.get(j));
}
}
// 测试方法
public static void main(String[] args) {
// TODO Auto-generated method stub
GetNodesLeaves test = new GetNodesLeaves();
ArrayList<String> srclist = new ArrayList<String>();
srclist.add("0101");
srclist.add("0102");
srclist.add("0103");
srclist.add("0104");
srclist.add("01041");
srclist.add("0104199");
srclist.add("010419988");
srclist.add("010419988a");
srclist.add("010419988b");
test.getLeaf(srclist, "01", srclist.size());
for (String ss : srclist) {
System.out.println(ss);
}
}
}
分享到:
相关推荐
无论是打印整个树形结构,还是只关注叶子节点,甚至是仅对特定层次的节点感兴趣,`tree.hh`都能满足你的需求。对于想要深入了解多叉树及其实现细节的读者,建议直接访问Kasper Peeters提供的官方文档和示例代码...
JavaScript中的树形结构是一种数据结构,它模仿了自然界中的树,由节点(也称为对象)组成,这些节点通过边(关系)相互连接。在JS中,每个节点可以包含子节点,形成一个层次结构,通常用于表示目录结构、组织数据...
本文从多个角度介绍了Java数据结构中的树形结构,不仅涵盖了树的基本概念,还包括了如何在Java中实现树形数据结构的具体代码示例。此外,还讨论了树在实际应用场景中的作用以及常见的遍历方法。希望读者能够通过本文...
标题中的“根据子节点的金额向上汇总所有父节点的金额”是一个典型的树形结构数据处理问题,常见于组织架构、账目统计或者数据库层次结构的数据分析。这个问题涉及到的知识点包括但不限于: 1. **树形结构**:在...
在Node.js环境中,读取本地文件并生成目录树是一种常见的需求,特别是在开发文件管理系统或进行文件操作时。Node.js提供了一系列强大的文件系统(fs)模块,使得开发者能够方便地进行文件和目录的操作。本篇文章将...
首先将所有叶子节点(字符及其频率)看作是一棵单独的树(单个节点),然后不断合并两个频率最小的树,直至只剩下一棵树为止。这个过程中,每次合并的两个树的根节点的权值是这两个树根节点权值之和,新创建的根节点...
反向层次遍历的具体实现通常涉及队列数据结构,但与常规层次遍历不同的是,我们首先将所有叶子节点入队,然后逐层处理父节点,直到队列为空。在处理每层节点时,我们会先访问父节点,再访问其子节点。在这个过程中,...
哈夫曼树(Huffman Tree),也称为最优二叉树,是数据结构中的一种特殊树形结构,主要用于数据编码和解码,特别是在数据压缩领域有着广泛的应用。在C++中实现哈夫曼树,需要理解其基本原理和构建过程。 哈夫曼树的...
本资料主要涉及数据结构中的树形结构。 ### 树的基本概念 - **节点(Node)**:树是由一系列的节点组成的。 - **根节点(Root Node)**:树中没有父节点的唯一节点称为根节点。 - **叶子节点(Leaf Node)**:没有子节点...
决策树是一种常用的数据挖掘方法,它通过构建树形结构来实现对数据的分类。决策树的每一个内部节点表示一个属性上的测试,每个分支代表一个测试结果,而每个叶节点代表一个类别。其基本思想是从给定的数据集中学习并...
二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。这种数据结构广泛应用于计算机科学的各个领域,如编译器设计、文件系统和搜索算法等。 首先,我们定义了二叉树的接口...
这种算法在处理树形数据时十分常见,因为它可以有效地按层次顺序访问节点。 首先,我们来理解树的基本概念。一棵树由若干个节点组成,每个节点可能有零个或多个子节点。在树的顶端有一个特殊的节点称为根节点,没有...
这些概念和操作构成了树的基础,理解并熟练掌握这些知识对于学习数据结构和算法至关重要,特别是在处理树形结构的问题时,如搜索、遍历、排序等。在实际应用中,如文件系统、数据库索引、编译器语法分析等,树结构都...
6. 计算二叉树中叶子节点的个数,可以通过递归遍历所有节点,对于每个节点,如果它没有子节点,则是叶子节点。 以上是对给定内容涉及的操作系统和数据结构知识点的详细解释,涵盖了磁盘调度算法、二叉树遍历和构建...
它通过构建一种树形结构,使得树中所有叶子节点到根节点的路径上权值之和(即路径长度)达到最小,从而在编码时能够使用更短的位来表示频繁出现的数据,提高压缩效率。 哈夫曼树的构造过程通常分为两步: 1. 构建...
二叉树是一种特殊的树形结构,每个节点最多有两个子节点:左子节点和右子节点。二叉树可以分为以下几种类型: 1. **完全二叉树**:除了最后一层外,其余各层节点都是满的;最后一层的节点都靠左排列。 2. **满...
二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树可以是空树,也可以包含一个根节点以及两个分别作为左子树和右子树的二叉树。 #### 1. 二叉树的建立 要建立一个...
二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在这个实验中,学生将学习如何创建、遍历和操作二叉树。 首先,实验目标是理解和掌握二叉树的定义、性质以及它们的不同...