package test;
import java.util.*;
public class Recursion {
public static void main(String[] args) {
List<TestDemo> rightList = new ArrayList<TestDemo>();
TestDemo right6 = new TestDemo(6, "客户添加", 5);
TestDemo right7 = new TestDemo(7, "客户删除", 5);
TestDemo right8 = new TestDemo(8, "客户修改", 5);
TestDemo right5 = new TestDemo(5, "客户管理", 0);
TestDemo right10 = new TestDemo(10, "VIP客户添加", 6);
TestDemo right11 = new TestDemo(11, "普通客户添加", 6);
rightList.add(right6);
rightList.add(right7);
rightList.add(right8);
rightList.add(right10);
rightList.add(right5);
rightList.add(right11);
TestDemo root = getRoot(rightList);
System.out.println(root.toXML());
}
public static TestDemo getRoot(List<TestDemo> list) {
TestDemo root = null;
for (TestDemo td : list) {
if (td.getParentId() == 0) {
root = td;
}
}
initChild(root, list);
return root;
}
// 递归算法
public static void initChild(TestDemo tdemo, List<TestDemo> list) {
int parentId = tdemo.getId();
for (TestDemo td : list) {
if (td.getParentId() == parentId) {
tdemo.getChild().add(td);
initChild(td, list);
}
}
}
}
class TestDemo {
private int id;
private String name;
private int parentId;
private Set<TestDemo> child = new HashSet<TestDemo>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}
public Set<TestDemo> getChild() {
return child;
}
public void setChild(Set<TestDemo> child) {
this.child = child;
}
public TestDemo(int id, String name, int parentid) {
this.id = id;
this.name = name;
this.parentId = parentid;
}
public String toXML() {
StringBuffer xml = new StringBuffer();
if (parentId == 0) {
xml.append("<sx:tree label='" + name + "'>\n");
} else {
xml.append(" <sx:treenode lable='" + name + "'>\n");
}
for (TestDemo td : child) {
xml.append(td.toXML());
}
if (parentId == 0) {
xml.append("</sx:tree>\n ");
} else {
xml.append(" </sx:treenode>\n");
}
return xml.toString();
}
}
分享到:
相关推荐
根据给定的信息,本文将详细解释C#中的递归树构建方法,并重点解析如何通过递归函数实现自动化的树形结构构建,包括添加父子节点等操作。 ### 一、递归树的概念 在计算机科学中,树是一种常用的数据结构,它由节点...
递归树是递归算法的一种可视化表现形式,它能帮助我们理解递归过程,尤其是对于那些涉及到分治策略的问题,如分形几何、搜索算法(如深度优先搜索DFS)和排序算法(如快速排序、归并排序)等。 递归树的绘制通常是...
在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在数据库中,树形结构通常通过自关联来表示,即一个表的某个字段引用该表自身,形成一个层级关系。对于单表...
在这个“c#绝好的递归树实例”中,我们将深入探讨递归的概念,以及如何在WinForm和ASP.NET项目中应用它。 首先,理解递归的基本概念至关重要。递归是指函数或方法调用自身的过程,通常用于解决分治问题,如遍历树形...
递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...
在探索算法的世界时,递归树作为一棵能够直观展示递归算法执行过程的结构化图示,对于理解算法的运行机制以及计算其时间复杂度至关重要。本文将探讨递归树的构建方式,以及如何通过递归树来分析归并排序和快速排序这...
Java无限递归树是一种在Java编程中用于表示层级关系数据结构的技术,通常在构建复杂的UI,如文件系统、组织架构或者数据库表的层次结构时使用。这种树结构能够无限制地自我扩展,允许节点拥有任意数量的子节点,从而...
JAVA_SQL递归树形,用递归算法结合数据库对J2EE实现树结构
随机递归树是一种数学模型,用于描述树状结构的数据或者自然现象,比如某些类型的社会网络、生物的分支结构等。在随机递归树模型中,从一个单一的节点出发,不断地随机添加新的节点,并为新加入的节点随机选择一个已...
总结来说,构建.NET递归树的关键在于理解递归的概念,以及如何在后台生成树形数据结构,并将其转换为前端可以处理的格式。同时,前端使用合适的jQuery控件,如`jstree`,将数据转化为用户友好的可视化界面。通过这种...
本次课设思路清晰, 构建了基于位置优先的多层次分治算法模型, 对Markdown语法转换成HTML格式较鲁棒, 特别对嵌套的子列表采用了递归树解析的方法, 此外本课设不仅完成了PDF上的基本需求, 还进行了全面的拓展, 比如...
2. **递归树存取数据库**: - 在数据库中存储树结构时,通常使用自连接表或者层级编码(如MPTT,Materialized Path Tree)来表示树关系。 - **递归查询**:通过递归SQL查询或编程语言中的递归函数来处理树数据,如...
Java 中的无限层级递归树前后端操作解决方案 在本解决方案中,我们将探讨 Java 中的无限层级递归树前后端操作解决方案,解决方案涵盖前端 Vue 无限层级树实现技术大纲、Java 无限递归层级树方案、前端数据结构、...
这个过程不仅展示了递归算法在处理树结构的强大能力,还体现了Qt在图形绘制方面的灵活性。通过适当调整节点间的距离、旋转角度或其他视觉效果,我们可以定制出更加美观和易于理解的树状图。在实际应用中,这种技术...
读取数据库树形数据使用递归函数构造树+C#+数据库&C#构造树
本篇将详细探讨如何使用递归方法来实现C#中的树形结构。 首先,理解树形结构的基本概念至关重要。在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的...
确定性均匀递归树的网络性质的研究已经有了大量的结果。关于确定性均匀递归树的谱的研究,章忠志等也提出了其拉普拉斯矩阵特征值的迭代关系。基于这个结果,我们又提出了推广的拉普拉斯矩阵,通过对其特征值进行分析...
`WITH`语句配合递归选项,可以实现递归查询,非常适合处理树形结构数据。 三、`WITH RECURSIVE`语法 在支持`WITH RECURSIVE`的数据库(如PostgreSQL、SQL Server)中,递归查询的通用语法如下: ```sql WITH ...
在复杂网络的模型构建与性质研究领域中, 确定性均匀递归树网络模型DURT(Deterministic Uniform Recursive Tree)得到了广泛应用。在DURT网络模型的基础上提出一种适用范围更广的广义确定性均匀递归树演化模型GDURT...
在.NET平台上,递归是一种强大的编程技术,常用于解决复杂问题,例如数据结构的遍历、树形结构的处理等。在这个"EmployeeSystem"项目中,递归被用来构建和操作一个员工关系的树状结构。这个系统可能用于管理公司的...