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

工作需要写了一个取得树形数据中指定节点所有叶子的算法[改进曾写的一个相同算法]

    博客分类:
  • java
阅读更多
package org.wyh;

import java.util.ArrayList;
import java.util.List;

public class GetAllLeaf {

	// 测试方法
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		GetAllLeaf getAllLeaf = new GetAllLeaf();
		String a[] = new String[] { "0101", "010102", "010104", "010103",
				"0102", "0103", "01010301", "abc" };

		ArrayList<String> rs = new ArrayList<String>();
		getAllLeaf.findLeaves("0101", a, rs);

		for (String r : rs) {
			System.out.println(r);
		}
           //输出结果010102 010104 01010301
	}

	/**
	 * 找出给定节点形数据的所有叶子
	 * 
	 * @param gv
	 *            给定节点数据
	 * 
	 * @param data
	 *            节点数据集合
	 * 
	 * @param rs
	 *            存放结果 ;
	 */
	public void findLeaves(String gv, String data[], List<String> rs) {
		for (int i = 0; i < data.length; i++) {
			if (data[i].startsWith(gv)) {

				// 如果是指定节点的孩子则递归查找
				if (data[i].trim().length() > gv.trim().length()) {
					findLeaves(data[i], data, rs);
				} else {

					// 把叶子节点放到结果集合中
					if (this.existsChildren(gv, data) == false
							&& rs.contains(gv) == false) {
						rs.add(gv);
					}
				}
			}
		}
	}

	/**
	 * 给定数据是否含有子节点
	 * 
	 * @param nodeValue
	 *            给定节点数据
	 * 
	 * @param data
	 *            节点数据集合
	 * 
	 * @param returns
	 *            if hasChildren reurn true else return false;
	 */

	public boolean existsChildren(String nodeValue, String data[]) {

		for (String everyNode : data) {
			if (everyNode.startsWith(nodeValue)
					&& everyNode.length() > nodeValue.length()) {
				return true;
			}
		}
		return false;
	}
}

1
0
分享到:
评论

相关推荐

    利用“剪叶子”算法实现树形结构的搜索功能,用Vue.js实现

    我们可以创建一个Vue组件来表示树形结构,每个节点作为一个组件实例,通过props传递数据,利用Vue的生命周期钩子函数(如`created`或`mounted`)来执行搜索操作。 1. **数据结构**:定义树形结构的数据模型,每个...

    多叉树的遍历,可以打印出树形结构,也可以只打印叶节点,或打印指定层的节点(一位德国教授写的)

    无论是打印整个树形结构,还是只关注叶子节点,甚至是仅对特定层次的节点感兴趣,`tree.hh`都能满足你的需求。对于想要深入了解多叉树及其实现细节的读者,建议直接访问Kasper Peeters提供的官方文档和示例代码...

    设二叉树采用链式存储结构,试设计一个算法计算一颗给定二叉树叶子节点的数目

    二叉树是一种树形数据结构,每个节点最多有两个子节点,即左子节点和右子节点。每个节点存储一些数据,例如整数、字符等。二叉树可以用链式存储结构或数组存储结构来实现。在这里,我们使用链式存储结构来实现二叉树...

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

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

    java树节点逐级汇总.zip

    在树形结构中,逐级汇总通常意味着从叶子节点向上到根节点,对每个节点的子节点数据进行聚合操作。 4. **树节点工具类**: - 这种类通常包含创建、操作和遍历树节点的方法。它可能会包括节点的数据属性(如值、子...

    寻找树中两叶子节点之间的最长路径

    在二叉树问题中,寻找两个叶子节点之间的最长路径是一个典型的图论问题,可以转换为在树中找到具有最大权重的路径。这个问题的关键在于非递归的解决方案,它通常涉及广度优先搜索(BFS)或深度优先搜索(DFS)算法。...

    js树形结构

    JavaScript中的树形结构是一种数据结构,它模仿了自然界中的树,由节点(也称为顶点)和边(连接节点的线)组成。在JS中,树形结构常用于表示层次关系,例如文件系统、组织结构或者HTML DOM。下面将详细讨论如何在...

    DecisionTree决策树数据挖掘算法的实现(Java)

    决策树是一种常用的数据挖掘算法,它通过学习样本数据构建出一棵树形模型,用于预测未知数据的类别。在Java中实现决策树可以帮助开发者理解和应用这种算法。本文将深入探讨决策树的基本原理、主要步骤以及如何在Java...

    数据挖掘与数据分析应用案例 数据挖掘算法实践 决策树分类算法及其应用.doc

    在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点到该叶子节点所经历的...

    算法-树形结构- 树与二叉树- 无根树转有根树.rar

    例如,在一个无向图中,寻找一棵生成树,使得所有节点相连且边的数量最少,这可以通过Prim's算法或Kruskal's算法实现。 在“树形结构- 树与二叉树- 无根树转有根树.pdf”文档中,可能会详细阐述这些概念,并通过...

    数据结构和算法(树)课件

    每个子节点可能拥有更多的子节点,这些子节点也构成树形结构,称为原节点的子树(Subtree)。树节点的度(Degree)是指一个节点拥有的子节点数量,树的度是树中节点度的最大值。 树结构可以递归地定义:一棵非空树...

    算法-树形结构- 树与二叉树- 树的数据生成器.rar

    7. **树的应用**:在文件系统、数据库索引、编译器设计、图算法等领域都有广泛的应用,例如文件系统的目录结构就是一个典型的树形结构,而编译器的语法分析则需要用到解析树。 8. **数据生成器的使用**:数据生成器...

    兩元树形结构算法說明

    在计算机科学中,树形结构是一种非常重要的数据结构,它模拟了自然界中的层次关系,广泛应用于各种算法设计中。本文档“两元树形结构算法说明”深入浅出地介绍了如何利用这种结构来构建和操作表格。在此,我们将详细...

    C语言数据结构算法——孩子兄弟链树(注释完整:创建、销毁、叶子结点赋值、求树高)

    孩子兄弟链树是一种特殊的数据结构,它在C语言中用于表示树形数据,特别是在处理具有多个子节点的节点时特别有用。这种数据结构的特点是每个节点不仅有一个父节点,还可以有多个子节点和兄弟节点。在C语言中实现这种...

    恋上数据结构与算法课件.rar

    二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。二叉树有多种变体,如完全二叉树、满二叉树和平衡二叉树。二叉搜索树是一种二叉树,其中每个节点的左子树只包含小于当前...

    如何展开存储在数据库中的树形数据结构.pdf

    树形数据结构是计算机科学中的一个重要概念,它广泛应用于表示具有层次关系的数据,如文件系统、组织结构图、家谱等。在关系数据库中,树形数据结构的实现通常采用父子关系来表示各个节点之间的层级关系。由于树形...

    算法-数据结构之【树形结构】复习题.rar

    在这个名为“算法-数据结构之【树形结构】复习题”的压缩包中,我们很显然会找到与树形结构相关的学习材料,特别是“数据结构之【树形结构】复习题.pdf”这份文档,它很可能是包含了一系列的练习题和解答,帮助学习...

    erchashu.zip_叶子节点

    二叉树是每个节点最多有两个子节点的树形数据结构,通常分为左子节点和右子节点。每个节点可以没有子节点,此时称为叶子节点(或终端节点);或者它可以有一个或两个子节点,称为内部节点(或非终端节点)。二叉树在...

    数据挖掘十大经典算法

    决策树是一种树形结构模型,其中每个内部节点表示一个特征或属性的测试,每个分支代表一个测试结果,每个叶子节点代表一个类别。 #### C4.5算法的关键特点 C4.5算法相对于ID3算法的主要改进之处包括: 1. **信息...

    基于递归算法在孩子兄弟法表示的树中查找任意节点

    在孩子兄弟表示法下,树中的每个节点都有一个指向第一个孩子的指针和一个指向下一个兄弟的指针。这种表示法使得遍历树变得更加直观,但同时也增加了查找双亲节点的难度。 ##### 树的孩子兄弟表示法 - **表示法说明...

Global site tag (gtag.js) - Google Analytics