`

递归算法结合数据库解析成java树形结构

    博客分类:
  • java
阅读更多

使用递归算法结合数据库解析成java树形结构

1、准备表结构及对应的表数据
a、表结构:

create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父节点
)

b、表数据:

复制代码
insert into tb_tree (CID, CNAME, PID) values (1, '中国', 0);
insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1);
insert into tb_tree (CID, CNAME, PID) values (3, '广东省', 1);
insert into tb_tree (CID, CNAME, PID) values (4, '上海市', 1);
insert into tb_tree (CID, CNAME, PID) values (5, '广州市', 3);
insert into tb_tree (CID, CNAME, PID) values (6, '深圳市', 3);
insert into tb_tree (CID, CNAME, PID) values (7, '海珠区', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河区', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田区', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山区', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密云县', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦东', 4);
复制代码

2、TreeNode对象,对应tb_tree

复制代码
public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();
 
public TreeNode() {
}
 
//getter、setter省略
}
复制代码

3、测试数据

复制代码
public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(JsonUtils.javaToJson(recursiveTree(1)));
}
 
/**
* 递归算法解析成树形结构
*
* @param cid
* @return
* @author jiqinlin
*/
public TreeNode recursiveTree(int cid) {
//根据cid获取节点对象(SELECT * FROM tb_tree t WHERE t.cid=?)
TreeNode node = personService.getreeNode(cid);
//查询cid下的所有子节点(SELECT * FROM tb_tree t WHERE t.pid=?)
List childTreeNodes = personService.queryTreeNode(cid); 
//遍历子节点
for(TreeNode child : childTreeNodes){
TreeNode n = recursiveTree(child.getCid()); //递归
node.getNodes().add(n);
}
 
return node;
}
}
复制代码

输出的json格式如下:

复制代码
{
    "cid": 1,
    "nodes": [
        {
            "cid": 2,
            "nodes": [
                {
                    "cid": 11,
                    "nodes": [
                         
                    ],
                    "cname": "密云县",
                    "pid": 2
                }
            ],
            "cname": "北京市",
            "pid": 1
        },
        {
            "cid": 3,
            "nodes": [
                {
                    "cid": 5,
                    "nodes": [
                        {
                            "cid": 7,
                            "nodes": [
                                 
                            ],
                            "cname": "海珠区",
                            "pid": 5
                        },
                        {
                            "cid": 8,
                            "nodes": [
                                 
                            ],
                            "cname": "天河区",
                            "pid": 5
                        }
                    ],
                    "cname": "广州市",
                    "pid": 3
                },
                {
                    "cid": 6,
                    "nodes": [
                        {
                            "cid": 9,
                            "nodes": [
                                 
                            ],
                            "cname": "福田区",
                            "pid": 6
                        },
                        {
                            "cid": 10,
                            "nodes": [
                                 
                            ],
                            "cname": "南山区",
                            "pid": 6
                        }
                    ],
                    "cname": "深圳市",
                    "pid": 3
                }
            ],
            "cname": "广东省",
            "pid": 1
        },
        {
            "cid": 4,
            "nodes": [
                {
                    "cid": 12,
                    "nodes": [
                         
                    ],
                    "cname": "浦东",
                    "pid": 4
                }
            ],
            "cname": "上海市",
            "pid": 1
        }
    ],
    "cname": "中国",
    "pid": 0
}
复制代码
分享到:
评论

相关推荐

    使用递归算法结合数据库解析成Java树形结构的代码解析

    使用递归算法结合数据库解析成Java树形结构的代码解析是指通过递归算法解析数据库中的树形结构数据,并将其转换为Java树形结构的过程。 首先,需要准备好表结构及对应的表数据。在这个示例中,我们创建了一个名为TB...

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

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

    java递归树型结构通用数据库

    在Java递归树型结构通用数据库中,使用递归算法来实现部门信息的查询和删除操作,该算法可以递归查询部门信息,实现树型结构的部门管理。 7. 部门树型结构展示 在Java递归树型结构通用数据库中,提供了部门树型...

    树形结构设计总结java demo

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

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

    在Java中遍历MySQL数据库中的树形结构是一个复杂但重要的任务,涉及数据库设计、递归算法以及性能优化等多个方面。通过深入理解树形结构的特点,并采用合适的遍历算法和优化策略,可以有效地管理和操作复杂的层级...

    递归显示数据库目录树(html+java servlet)

    4. **数据返回**:Servlet将构建好的树形结构转换为JSON或其他适合传输的格式,然后响应给前端。 5. **前端渲染**:HTML页面接收到数据后,用JavaScript解析并更新DOM,显示目录树。 在实现过程中,需要注意以下几...

    递归显示数据库目录树+BBS

    数据库目录树的表示通常使用树形结构,其中每个节点代表一个目录或文件,包含其名称、路径和子节点(子目录或文件)。在Java中,我们可以创建一个`DirectoryNode`类来表示这样的节点,包含`name`、`path`属性以及一...

    java简单开发部门树(Tree)

    - 前端接收到JSON数据后,需要解析并渲染成可视化的树形结构。可以使用第三方库如jstree、treeview等,或者自定义渲染逻辑,实现拖拽排序、搜索功能等增强交互性。 7. **测试与调试**: - 对于开发的每个环节,都...

    无限级树(Java递归)

    ### 无限级树(Java递归)知识点解析 #### 一、概述 本文将深入解析一个基于Java实现的无限级树形结构,并采用递归方式...虽然代码可能存在一定的优化空间,但对于理解和实现递归算法构建树形结构具有很好的参考价值。

    zTree后台组装树结构java代码

    - zTree通过解析JSON数据,动态渲染出树形结构。 以上就是关于"zTree后台组装树结构java代码"的主题知识,包括了zTree的使用、Java与MySQL的交互、递归算法构建树、Spring JDBC等内容。理解并掌握这些知识点,能够...

    根据数据库表结构自动生成产品结构树

    "根据数据库表结构自动生成产品结构树"这一技术,其核心是将数据库中的BOM数据转换成可视化、层次化的结构,以树形图的方式展示出来。这涉及到数据库查询、数据处理和图形化表示等多个方面的知识。 首先,我们需要...

    树形结构list构建(树形实体)

    在IT行业中,树形结构是一种常见的数据组织方式,尤其在数据存储、图形界面设计和算法实现等方面有着广泛的应用。在本案例中,我们探讨的是如何使用List来构建一个树形结构,这通常涉及到实体类的设计、工具类的利用...

    JAVA后台转换成树结构数据返回给前端的实现方法

    我们可以定义一个DTO(Data Transfer Object)来存储树形结构的数据,然后使用递归算法来将数据转换成树形结构。 在上面的示例代码中,我们定义了一个ProjectBasicInfoDTO来存储树形结构的数据。这个DTO包含了id、...

    Java 无限极 树结构

    在Java编程中,树结构是一种常见的数据结构,用于表示具有层次关系的数据。无限极树结构则是指树的层级没有限制,可以无限扩展。这种结构在实际应用中非常广泛,例如组织架构、文件系统、菜单导航等场景。下面将详细...

    java构造多级树结构,支持多根节点

    在Java编程中,构建多级树结构是一种常见的需求,特别是在数据组织、文件系统或图形用户界面设计中。这里我们讨论如何在Java中实现一个支持多根节点的树...同时,结合前端的ZTree库可以实现美观且交互式的树形展示。

    JAVA 结合 dtree 数据库取值树状显示

    不过,考虑到上下文,这里提到的"dtree"更可能是指一种用于构建树形结构的数据展示工具或库,可能与前端或后端的数据呈现有关。 Java作为一个强大的后端开发语言,提供了多种方式来处理树形结构。例如,可以使用...

    利用java+mysql递归实现拼接树形JSON列表的方法示例

    2. **拼装树形结构**:使用递归算法,根据父ID将节点关联起来,构建出树形结构。这里提供了一个名为`TreeBuilder`的工具类,用于处理这个过程。 ```java package *.*.*; import net.sf.json.JSONArray; import...

    Tree(将数据库记录生成树)

    我们可以利用这种关系将数据库记录组织成树形结构。 在Java中,我们可以创建一个表示树节点的类,包含数据(数据库记录)和指向子节点的引用。为了实现从数据库记录到树的转换,我们需要遍历数据库结果集,并根据...

    java的算法大全集结免费.zip

    递归是函数自身调用自身,常用于树形结构处理;分治策略将问题分解为小问题解决,如快速排序;动态规划用于优化复杂问题,如背包问题;贪心算法和回溯法则常用于求解最优化问题。 二、数据结构 数据结构是算法的...

    把扁平化的数据转换成树形结构的JSON,把树形JSON扁平化.zip

    本主题将深入探讨如何将扁平化的数据转换成树形结构的JSON,以及如何将树形JSON扁平化。这些操作在数据处理、数据库设计和算法实现中十分常见。 首先,我们来理解“扁平化数据”。在计算机编程中,扁平化数据通常是...

Global site tag (gtag.js) - Google Analytics