`
jayzotion
  • 浏览: 48520 次
  • 性别: Icon_minigender_1
  • 来自: 森林之城
社区版块
存档分类
最新评论

取得给定树形数据node的所有叶子

    博客分类:
  • java
J# 
阅读更多

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提供的官方文档和示例代码...

    js树形结构例子

    JavaScript中的树形结构是一种数据结构,它模仿了自然界中的树,由节点(也称为对象)组成,这些节点通过边(关系)相互连接。在JS中,每个节点可以包含子节点,形成一个层次结构,通常用于表示目录结构、组织数据...

    java数据结构树

    本文从多个角度介绍了Java数据结构中的树形结构,不仅涵盖了树的基本概念,还包括了如何在Java中实现树形数据结构的具体代码示例。此外,还讨论了树在实际应用场景中的作用以及常见的遍历方法。希望读者能够通过本文...

    根据子节点的金额向上汇总所有父节点的金额

    标题中的“根据子节点的金额向上汇总所有父节点的金额”是一个典型的树形结构数据处理问题,常见于组织架构、账目统计或者数据库层次结构的数据分析。这个问题涉及到的知识点包括但不限于: 1. **树形结构**:在...

    nodejs实现读取本地文件生成目录树

    在Node.js环境中,读取本地文件并生成目录树是一种常见的需求,特别是在开发文件管理系统或进行文件操作时。Node.js提供了一系列强大的文件系统(fs)模块,使得开发者能够方便地进行文件和目录的操作。本篇文章将...

    图形化输出哈弗曼树-数据结构

    首先将所有叶子节点(字符及其频率)看作是一棵单独的树(单个节点),然后不断合并两个频率最小的树,直至只剩下一棵树为止。这个过程中,每次合并的两个树的根节点的权值是这两个树根节点权值之和,新创建的根节点...

    tree_反向层次遍历树_4321_

    反向层次遍历的具体实现通常涉及队列数据结构,但与常规层次遍历不同的是,我们首先将所有叶子节点入队,然后逐层处理父节点,直到队列为空。在处理每层节点时,我们会先访问父节点,再访问其子节点。在这个过程中,...

    数据结构哈夫曼树C++代码

    哈夫曼树(Huffman Tree),也称为最优二叉树,是数据结构中的一种特殊树形结构,主要用于数据编码和解码,特别是在数据压缩领域有着广泛的应用。在C++中实现哈夫曼树,需要理解其基本原理和构建过程。 哈夫曼树的...

    数据 结构 资料 笔记 树

    本资料主要涉及数据结构中的树形结构。 ### 树的基本概念 - **节点(Node)**:树是由一系列的节点组成的。 - **根节点(Root Node)**:树中没有父节点的唯一节点称为根节点。 - **叶子节点(Leaf Node)**:没有子节点...

    (完整版)生物数据挖掘-决策树实验报告.docx

    决策树是一种常用的数据挖掘方法,它通过构建树形结构来实现对数据的分类。决策树的每一个内部节点表示一个属性上的测试,每个分支代表一个测试结果,而每个叶节点代表一个类别。其基本思想是从给定的数据集中学习并...

    数据结构与算法-实验四二叉树

    二叉树是一种特殊的树形数据结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。这种数据结构广泛应用于计算机科学的各个领域,如编译器设计、文件系统和搜索算法等。 首先,我们定义了二叉树的接口...

    03-树1. List Leaves.zip

    这种算法在处理树形数据时十分常见,因为它可以有效地按层次顺序访问节点。 首先,我们来理解树的基本概念。一棵树由若干个节点组成,每个节点可能有零个或多个子节点。在树的顶端有一个特殊的节点称为根节点,没有...

    数据结构课件:第6章 树和二叉树.ppt

    这些概念和操作构成了树的基础,理解并熟练掌握这些知识对于学习数据结构和算法至关重要,特别是在处理树形结构的问题时,如搜索、遍历、排序等。在实际应用中,如文件系统、数据库索引、编译器语法分析等,树结构都...

    操作系统和数据结构计算题.doc

    6. 计算二叉树中叶子节点的个数,可以通过递归遍历所有节点,对于每个节点,如果它没有子节点,则是叶子节点。 以上是对给定内容涉及的操作系统和数据结构知识点的详细解释,涵盖了磁盘调度算法、二叉树遍历和构建...

    哈夫曼树二叉树带权值计算C代码

    它通过构建一种树形结构,使得树中所有叶子节点到根节点的路径上权值之和(即路径长度)达到最小,从而在编码时能够使用更短的位来表示频繁出现的数据,提高压缩效率。 哈夫曼树的构造过程通常分为两步: 1. 构建...

    编程数据结构

    二叉树是一种特殊的树形结构,每个节点最多有两个子节点:左子节点和右子节点。二叉树可以分为以下几种类型: 1. **完全二叉树**:除了最后一层外,其余各层节点都是满的;最后一层的节点都靠左排列。 2. **满...

    数据结构域算法-二叉树的查找

    二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树可以是空树,也可以包含一个根节点以及两个分别作为左子树和右子树的二叉树。 #### 1. 二叉树的建立 要建立一个...

    数据结构实验5二叉树操作.doc

    二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。在这个实验中,学生将学习如何创建、遍历和操作二叉树。 首先,实验目标是理解和掌握二叉树的定义、性质以及它们的不同...

Global site tag (gtag.js) - Google Analytics