`
huansinho
  • 浏览: 13230 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

不用递归也来构造树型结构

阅读更多
某日有人问我怎样把类别表的数据在JAVA程序中构造。
第一答案就是递归咯~~~~
不过我一向不大记住以前的东西,所以另外想了个方法,就是借助Map把类别表的数据变成一棵树。

/**
 * 我是节点类~~ 嘻嘻嘻~~~~
 */
public class Node {
	//节点ID
	private Integer nId;
	//节点名称
	private String nName;
	//父节点ID
	private Integer pId;
	//子节点集合
	private List<Node> cNodes;
	
	public void addChild(Node node) {
		if (cNodes == null) {
			cNodes = new ArrayList<Node>();
		}
		cNodes.add(node);
	}
	
	// 下面的get set 方法就省略了。
}


public class Builder {

	public void build() {
		// 首先把需要记录取出来放到一个Map集合里。
		// 比如在数据可以中取出
		Map map = new xxxxMap();
		Node node;
		// 如何查询数据库中的数据就不写了。。
		........
		while (rs.next()) {
			//创建节点对象
			node = new Node();
			node.nId = rs.getInt(1);
			.......
			// 创建好就添加到集合里
			map.put(node.nId, node);
		}
		
		// 获取到所有数据后需要遍历一次map。
		for (Node n : map.values()) {
			// 用当前对象的父节点ID在map中找出父节点对象
			if (!(node = map.get(n.pId)) == null) {
				// 为父节点对象添加子节点
				node.addChild(n);
			}
		}//循环完毕树形结构也就出来啦~~~~~
	}
}



好吧我承认我是变相偷懒伪代码党
2
2
分享到:
评论

相关推荐

    我的树型结构练习使用

    在实际编程中,我们通常用类来实现树型结构。例如,我们可以创建一个名为`TreeNode`的类,包含一个值字段和一个子节点列表。在Python中,这样的类可能如下所示: ```python class TreeNode: def __init__(self, ...

    树型结构的一个例子

    在Delphi中,经常使用TTreeview组件来显示树型结构。这个组件允许程序员添加、删除和操作树的节点,同时支持自定义图标和提示信息。在这个示例中,"Unit1.pas"可能包含了实现递归读取数据库数据并填充TTreeview组件...

    jpa单表递归树形结构实现

    在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...

    android树型结构,

    总结来说,Android中的树型结构实现涉及创建递归数据模型,从SQLite数据库读取数据,使用Gson库将数据转换为对象,以及通过广播在组件间传递数据。理解并熟练掌握这些技术对于构建复杂的Android应用至关重要。

    java写的递归建树型结构

    在IT领域,构建树型结构是一...总结来说,这个Java程序利用递归思想和数据库操作,构建了一个基于数据的树型结构。理解这些核心概念对于进行类似项目开发至关重要,无论是数据可视化、文件系统管理还是复杂的算法实现。

    数据结构实验报告(C++) 实验2;树型结构实验指导 程序源码

    在这个实验报告中,我们将重点关注树型结构,这是一种非线性的数据组织形式,广泛应用于计算机算法和数据管理中。C++作为一门强大的面向对象编程语言,是实现这些数据结构的理想选择。 实验的第一个任务是满二叉树...

    树型数据结构在测井软件中的应用.pdf

    结合测井数据在深度方向具有先后顺序的特点,可以采用顺序存储的方式来描述树型结构的存储模型。具体来讲,可以使用父表和子表的方式,通过关键字建立两个表之间的联系。父表的关键字段具有唯一性,而子表的字段与父...

    树型数据结构的探讨.pdf

    在计算机领域中,树型结构有着多种物理存储方式,例如常见的顺序存储和连接存储。顺序存储通常用于存储完全二叉树,即除了最后一层外,每一层都是满的,而最后一层的所有节点都集中在左边。连接存储则是将每个节点...

    树型菜单的构造算法

    本文将深入探讨“树型菜单的构造算法”,并结合标签“源码”和“工具”,我们将从代码实现的角度出发,解析如何创建这样的数据结构。 首先,树型菜单的基本概念是它具有层次结构,类似于自然界中的树木,每个节点...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    在递归深度已知且较浅的情况下,可以通过多次自关联的方式来平面化递归过程,但当递归深度未知或树型结构复杂时,这种方法就显得力不从心。 迭代的本质是通过循环逐步接近目标,每次迭代的结果作为下一次迭代的起始...

    用SQL形成父子结点树结构的妙法.pdf

    这就需要开发人员利用编程手段来解析树型结构数据并展示为树状视图,这通常是通过递归查询或是使用特殊的GUI控件来实现的。 然而,本文提出了一种不需要特别程序解析,几乎可以使用列表型字典表的处理逻辑,通过一...

    树型javascript

    总之,JavaScript中的树型结构是实现复杂逻辑和数据操作的重要工具,理解和掌握树的概念、构造及操作方法对于提升编程技能至关重要。无论是在文件系统、数据库查询、图形界面设计还是算法实现,树形结构都有着广泛的...

    数据结构第4章树PPT学习教案.pptx

    树是一类重要的非线性结构,树型结构是一类结点之间有分支,并具有层次关系的结构。它非常类似于自然界中的树。树结构在客观世界中是大量存在的,在计算机领域中也有着广泛的应用,如在编译程序中,用树来表示源程序...

    根据父节点找所有子节点数据.zip

    总的来说,这个Java工具类提供了高效且灵活的手段,帮助开发者在树型数据结构中根据父节点快速获取所有子节点的数据。它体现了递归在解决复杂问题时的强大能力,以及Java面向对象编程的灵活性。在实际项目中,这样的...

    选课解题报告(树型DP)

    总的来说,树型DP是一种强大的工具,尤其在处理树形结构的问题时,如这个选课问题。通过精心设计状态和转移方程,我们可以高效地找出最优解。在实际编程中,要特别注意状态的定义、转移方程的构建以及避免重复计算,...

    自考02331数据结构考点整理.pdf

    理解数据结构的分类,如线性结构、树型结构、图形结构和文件结构,以及抽象数据类型(ADT)的概念至关重要。此外,算法分析的基础知识,如时间复杂度和空间复杂度的计算也是常考内容。 第二章:线性表 线性表是最...

    特定线性数据结构到层次数据结构的转化.pdf

    文件中指出,线性数据结构可以通过特定的顺序和限制转化为层次数据结构,具体表现在可以将线性数据结构通过遍历的方式转换为树型数据结构。比如,通过前序遍历序列和中序遍历序列可以构造出二叉树。 2. 二叉树的...

    数据结构教学大纲

    集合、线性结构、树型结构和图型结构构成了数据组织的基础框架,而存储方式包括顺序存储、链接存储、散列存储和索引存储等。学生必须理解和掌握这些基本概念,这是深入学习后续内容的前提。在此基础上,算法的性能...

    数据结构朱站力版答案

    3. **第五章作业参考答案.doc**:第五章可能涵盖树型结构。树是层次关系的数据表示,有二叉树、满二叉树、完全二叉树、平衡树(如AVL树和红黑树)等多种类型。这部分可能包含树的构造、遍历、查找、插入和删除问题的...

Global site tag (gtag.js) - Google Analytics