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;
}
}
分享到:
相关推荐
根据自己碰到的业务场景,自己总结的搜索树形结构节点的算法。用Vue.js实现Demo
最近做了一个科技树的功能,如上图树形结构, 一个节点有多个父节点/多个叶子节点, 要求叶子节点,整体在多个父节点的中间 算法思路是简单的,不过实现起来我是碰到了一堆问题,特别是递归导致卡死又得重启项目。 ...
决策树是一种树形结构的分类模型,通过对数据的特征进行递归划分,最终将样本分到不同的叶子节点上,每个叶子节点对应一个类别。通过这个demo,我们可以学习如何利用决策树算法对鸢尾花进行分类,并理解决策树的构建过程...
BIRCH算法(平衡迭代削减聚类法):聚类特征使用3元组进行一个簇的相关信息,通过构建满足分枝因子和簇直径限制的聚类特征树来求聚类,聚类特征树其实是一个具有两个参数分枝因子和类直径的高度平衡树;分枝因子规定了...
决策树是一种基于树形结构的分类和回归方法,它通过对数据集进行逐步划分和分类,逐步构建树形结构,最终得到一个决策树模型。在决策树中,每个节点代表一个特征,每个叶子节点代表一个类别,每个分支代表一个决策...
决策树算法: 决策树是一种树形结构,其中每个节点代表一个特征,每个分支代表一个特征取值,每个叶子节点代表一个类别。通过对数据集进行递归划分,决策树学习从输入特征到输出标签的映射。 数据预处理: 在项目中...
决策树(decision tree)是一种基本的分类与回归方法,决策树模型呈树形结构,树中包含叶子节点与内部节点。本实验为利用MATLAB进行决策树算法的生成。实验数据为人民币模型,包含100,50,20,10元4种。
哈夫曼树(Huffman Tree)是一种用于数据压缩的树形数据结构。它是由David A. Huffman在1952年提出的,被广泛应用于数据压缩算法中。 哈夫曼编码(Huffman Coding)是一种基于哈夫曼树的编码方法,它通过对数据中...
具体就是 :从根节点开始,按照实例的某一特征进行测试,根据测试结构将实例分配到子节点, 当沿着该分支可能到达叶子节点或到达另一个内部节点时,就使用新的测试条件递归执 行下去,直到到达一个叶子节点。...
通过把实例从根节点排列到某个叶子节点来分类实例叶子节点即为实例所属的分类树上每个节点说明了对实例的某个属性的测试,节点的每个后继分支对应于该属性的一个可能。 决策树分为回归决策树和分类决策树! 2....
决策树 依据一些 feature 进行分类,每个节点提一个问题,通过推断,将数据分为两类,再继续提问。这些问题是依据已有数据学习出来的,再投入新数据的时候,就可以依据这棵树上的问题,将数据划分到适宜的叶子上。 ...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行...
本算法将冲突集合分裂成一个3阶的B+树,即将每次发生冲突的集合分裂成3个子集,从而加快冲突集合的分裂速度,冲突集合相当于B+树的中间节点,每个子集分别对应于一个关键码,叶子节点或只包含一个标签或为一个空集合...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行...
队列的顺序存储最后版本.c 树形结构.c 算总节点数和叶子结点数.c 队列的链式存储.c 线性表链式数据结构.c 图的邻接表.c 图的邻接矩阵.c
e. 如有可能,请建立一个存储商品名称和数量的文本文件,并为二叉搜索树建立一个成员函数SetupInventory(),用于从该文本文件中读取库存商品的数据, 实验报告要求: 1、 按要求记录下二叉搜索树的完整实验...
图的邻接矩阵.c 线性表链式数据结构.c 队列的链式存储.c 队列的顺序存储.c 树形结构.c 算总节点数和叶子结点数.c 图的邻接表.c 可以完成课程设计
新插入的结点一定是一个新添加的叶子节点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。 插入算法: 首先执行查找算法,找出被插结点的父亲结点; 判断被插结点是其父亲结点的左、右...
所谓的回归树模型其实就是用树形模型来解决回归问题,树模型当中最经典的自然还是决策树模型,它也是几乎所有树模型的基础。虽然基本结构都是使用决策树,但是根据预测方法的不同也可以分为两种。第一种,树上的叶子...