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

递归遍历树形结构及数据库设计

阅读更多
public class Test {
	
	public static void main(String[] args) {
		Map<Integer,Integer> map = new HashMap<Integer,Integer>();
		map.put(1, 0);
		map.put(2, 0);
		map.put(3, 1);
		map.put(4, 1);
		map.put(5, 2);
		map.put(6, 4);
		map.put(7, 4);
		map.put(8, 7);
		//得到某一节点下的所有子节点(如果有)
		getIds(1, map);
		System.out.println(listRet);
	}
	
	private static List<Integer> listRet = new ArrayList<Integer>();
	public static void getIds(int id,Map<Integer,Integer> map){
		List<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i < map.size(); i++) {
			int x = map.get((i+1));
			if(x==id){
				list.add((i+1));
			}
		}
		if(list.size()!=0){
			listRet.addAll(list);
			System.out.println(id+"->"+list);
			for (int i = 0; i < list.size(); i++) {
				getIds(list.get(i), map);
			}
		}
	}

}


数据库设计:




查询语句为:
SELECT * from tree WHERE
position REGEXP CONCAT((SELECT position from tree where name = 'fruit'),'[\w\W]*')

当然,你用like也可以
查询结果为:

如果要插入的话略有一点复杂,步骤为:
如当我要在id=36的banana边插入一个同级的,做法为:
1、先获得blue的position,为1-1-2
2、找到1-1-2[\w\W]*匹配的正则,获取最后一段,按降序排列,得到第一个的数字
3、将数字+1,并拼装1-1-2为最终结果
  • 大小: 6.8 KB
  • 大小: 10.4 KB
  • 大小: 7.6 KB
  • 大小: 4.8 KB
分享到:
评论

相关推荐

    Java递归遍历树形结构

    总之,Java递归遍历树形结构是通过反复调用同一方法来处理树的不同部分,以构建或遍历层次数据。这种技术在处理菜单、文件系统、组织结构等场景中非常常见,因为它们都具有层次化的特性。理解和掌握递归遍历对于Java...

    C#父子关系树递归遍历方法(含源码).rar

    通过学习和应用这些知识,开发者能够处理层级数据,构建和显示树形结构,并与数据库进行交互,从而在实际项目中实现类似的功能,例如展示产品组件关系、组织架构等。在实际编码时,理解递归原理和如何正确操作数据库...

    Java递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理的 JSON 格式。 在 Java 中,使用...

    树形结构的数据库表Schema设计1

    在数据库设计中,树形结构是一种常见的数据组织方式,它被广泛应用于表示层次关系,例如组织结构、分类系统等。本文以食品族谱为例,探讨如何在关系型数据库中存储和操作树形结构数据。 首先,最基本的树形结构设计...

    C#控制台用递归方法显示树形结构

    在树形结构中,递归通常用来遍历树的每一个节点。在这个例子中,我们的任务是打印出图书类别树,每个类别可能有子类别或者具体的书籍。 为了实现这个功能,我们首先需要定义一个数据结构来表示图书类别。我们可以...

    二叉树的建立及递归遍历

    二叉树是一种在计算机科学中广泛应用的数据结构,它是由节点(通常称为顶点)和连接这些节点的边构成的树形结构。每个节点最多有两个子节点,分别被称为左子节点和右子节点。二叉树的特性使得它们非常适合用于搜索、...

    JSP_遍历树(递归)

    总之,JSP的递归遍历树形结构示例为我们提供了一个实践性的指导,展示了如何在Web开发中利用递归和数据库交互来处理复杂的层次数据。这对于提升Web应用程序的灵活性和功能多样性有着不可忽视的作用。

    mysql 树形结构查询

    在 iterative 存储过程中,我们定义了一个游标 cur1,以便于遍历树形结构的数据。然后,我们使用 OPEN 语句打开游标,并使用 FETCH 语句将数据 fetch 到 tid 和 tname 变量中。接着,我们使用 WHILE 循环来遍历树形...

    jpa单表递归树形结构实现

    例如,可以使用`findAllByOrderByParentIdAsc()`获取所有节点,然后在内存中遍历和构造树形结构。 最后,业务逻辑中调用`NodeRepository`的方法来操作树形结构。例如,创建新节点时,先找到父节点,然后将新节点的`...

    树形结构数据库设计

    树形结构数据库设计是一种常见的数据组织方式,尤其适用于处理层次性数据。本文将深入探讨“树形结构数据库设计”的概念、特点以及如何利用SQL进行操作。 树形结构数据库设计模仿了自然界中的树状模型,每个节点...

    一次集合遍历实现树形结构 - server

    接下来,我们要解决的问题是如何从扁平化的数据结构(例如数据库查询结果)转换为树形结构。这里的关键在于一次性遍历集合,通过节点的父子关系构建树。一种常见方法是使用递归: ```java public TreeNode build...

    带数据库的递归经典树形菜单

    本文将深入探讨“带数据库的递归经典树形菜单”这一主题,结合给定的文件内容,包括如何实现递归,构建树形结构,以及如何通过SQL语句来管理和操作数据。 首先,我们要理解“递归”这一概念。在编程中,递归是一种...

    Oracle递归树形结构查询功能

    Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...

    在java中 遍历mysql中的树形结构

    本文将深入探讨如何利用Java语言和MySQL数据库来实现这一功能,解析给定代码片段,并提供一种高效遍历树形结构的方法。 ### 一、理解树形结构 树形结构是一种非线性的数据结构,它由节点和边组成,其中每个节点...

    运用递归生成树形结构 Treeview

    本教程将详细解释如何运用递归方法生成树形结构,使得数据能够以视觉上易于理解的树状布局呈现。 一、.NET Treeview简介 .NET Treeview控件是Windows Forms中的一员,它允许开发人员在用户界面中展示分层的数据结构...

    树形结构设计总结java demo

    在实际应用中,树形结构常用于实现文件系统、数据库索引、图算法(如A*寻路)、表达式解析、编译器语法树等。例如,在设计一个组织结构管理系统时,每个节点可以代表一个员工,其子节点则表示其下属,这样就形成了一...

    基于JAVA建立树形结构的算法优化.pdf

    3. 内存中的树形结构构建:在内存中通过递归或迭代的方式构建出完整的树形结构。 4. 节点的查询与插入:针对不同层级节点的查询,以及节点数据的插入操作。 5. 算法复杂度的优化:优化遍历算法,减少不必要的数据...

    数据库设计之递归树查询

    `WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形结构数据。 三、`WITH RECURSIVE`语法 在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH ...

    Excel树形结构数据导入Oracle数据库(Java)

    在Java中处理这种数据,我们需要遍历这些层级,构建相应的数据模型来表示树形结构。 该博客中提到的"ExecleToDBUtils.java"文件,很可能是用于读取Excel并将其数据转换为适合存储在Oracle数据库中的格式的工具类。...

    二叉树的非递归中序遍历 C代码

    它是一种树形结构,其中每个节点最多有两个子节点,即左子节点和右子节点。二叉树广泛应用于计算机科学和软件工程中,如数据库索引、文件系统、编译器设计等。 在这篇代码中,我们定义了一个名为 BiTNode 的结构体...

Global site tag (gtag.js) - Google Analytics