如何从数据库中拿取数据来还原一颗指定用户的多叉树

Java实现对多叉树的操作 Java多叉树前言我们实现下面这颗树Show Code?节点对象多叉树对象测试测试代码测试效果 前言 前段时间遇到的一个需求,前台需要实现一个类似于思维导图的页面,并且就一个页面,项目不是思维导图项目。 所以打算以json数据的形式在数据库存储数据【MySql中对json数据的操作支持】 后台以多叉树的结构做缓存【因为就用到一个页面,数据较少】 前端只提供渲染与数据交互 下面贴出实现的小demo... 阅读详情

代码如下:

package 算法and数据结构.数据结构.多叉树.文件管理系统.从数据库中拿取数据并建树;

import 算法and数据结构.数据结构.多叉树.文件管理系统.Node.Node;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import static 算法and数据结构.数据结构.多叉树.文件管理系统.连接数据库.getMySQL.getConnection;

public class creat {

    String select = "select file_name from file_system where parent_file_name = '{' and user_name = '{'";

    public creat(Node root){
//        select(root,"893295815@qq.com");

        select(root,"NCEPU_RuanCong");
        System.out.println("=======================前======================");
        text.pre(root);
        System.out.println("=======================中======================");
        text.mid(root);
        System.out.println("=======================后======================");
        text.pos(root);
    }

    private String getSelectSQL(String ...args) {
        StringBuilder stringBuilder = new StringBuilder(args[0]);
        int j = 1;
        for (int i = 0; i < stringBuilder.length(); i++) {
            if (stringBuilder.charAt(i) == '{'){
                stringBuilder.replace(i,i+1,args[j]);
                i=i+args[1].length();
                j++;
            }
        }
        return stringBuilder.toString();
    }

    private void select(Node root,String username){
        if (root == null)return;
        Connection connection=getConnection();
        Statement statement=null;
        ResultSet resultSet=null;
        try {
            statement=getConnection().createStatement();
            System.out.println(getSelectSQL(select,root.date,username));
            resultSet=statement.executeQuery(getSelectSQL(select,root.date,username));
            while (resultSet.next()){
                root.children.add(new Node(resultSet.getString("file_name"),root,1));
            }
            for (int i = 0; i < root.children.size(); i++) {
                select(root.children.get(i),username);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if (connection != null){
                try {
                    connection.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
           if (statement != null){
               try {
                   statement.close();
               } catch (SQLException throwables) {
                   throwables.printStackTrace();
               }
           }
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}
class text{
    public static void main(String[] args) {
//        new creat(new Node("Is 893295815@qq.com Computer",null,1));
        new creat(new Node("Is NCEPU_RuanCong Computer",null,1));

    }
    public static void pre(){

    }
    public static void pre(Node root){
        if(root == null)return;
        System.out.println(root.date);
        for(int i=0 ; i< root.children.size() ;i++){
            pre(root.children.get(i));
        }
    }
    public static void mid(Node root){
        if(root == null)return;
        if (root.children.size() != 0){
            mid(root.children.get(0));
        }
        System.out.println(root.date);
        for(int i = 1 ; i < root.children.size() ; i++){
            mid(root.children.get(i));
        }
    }
    public static void pos(Node root){
        if (root == null){
            return;
        }
        for (int i = 0; i < root.children.size(); i++) {
            pos(root.children.get(i));
        }
        System.out.println(root.date);
    }
}

以下是代码运行的结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在数据库中建立一颗多叉树(其中一种方法) 代码如下:(递归建立) package 算法and数据结构.数据结构.多叉树.文件管理系统.数据存储; import 算法and数据结构.数据结构.多叉树.文件管理系统.Node.Node; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import static 算法and数据结构.数据结构.多叉树.文件管理系统.连接数据库.getMySQL.getConnection; p 阅读详情

相关推荐

TreeNde多叉树的构建与遍历

多叉树是一种每个节点最多有无限个子节点的树形数据结构。在多叉树中,节点的子节点数目没有固定的限制,与二叉树相比,它能够更好地模拟现实世界中的多种层级关系,比如组织结构图、多维索引等。多叉树的节点可以包含多个指针,指向其不同的子节点,因此在某些应用场景下,它比二叉树拥有更高的效率和空间利用率。逆向转换是从XML文档中提取信息并构建多叉树的过程。首先需要解析XML文档,得到其结构和内容。常见的XML解析技术包括:DOM解析器:将整个XML文档加载到内存中,并构建出一个树形结构供程序遍历。

weixin_42300144的博客 1057

通过根结点到叶结点的路径还原多叉树

工作的时候遇到根据根结点到叶结点的路径还原多叉树的问题,下面是我的源代码,不知道你们有没有好的方法,欢迎评论指正。 由以下三个路径: 路径深度可以自定义,本文路径深度为4 还原成如下多叉树, import com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; import java.uti...

RichurLiu的专栏 968

掌握二叉树的遍历与还原

本文详细解读了二叉树的三种基本遍历方法:先序遍历、中序遍历、后序遍历,以及层次遍历和基于遍历序列的树还原。通过算法代码和图解,深入理解了遍历过程中的逻辑和树结构的重建。

weixin_30533301的博客 411

二叉树的恢复

一、二叉树的恢复:根据前序和中序 或者后序和中序 才能复原二叉树,要恢复二叉树必须知道中序序列,只是知道前序和后序,不能恢复二叉树,因为不知道中序序列无法获知根节点的左右子树位置。 二、根据前序和中序恢复二叉树 二叉树还是 这颗二叉树(哈哈) 大致思路:create_bintree(二叉树,前序,中序,字符串长度) 如果字符串长度 = 0,二叉树就为NULL,否者,在中序中找前序的第一

littesss的博客 9759

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

基于PSINS的INS/NHC/ODO组合导航仿真全解析

组合导航通过多传感器融合克服单一导航系统的局限,是车辆自主定位的关键技术。其中惯性导航(INS)依靠陀螺仪与加速度计积分推算运动状态,但误差随时间累积;GNSS提供绝对位置,却在城市峡谷中易受多径效应和遮挡影响导致定位漂移。卡尔曼滤波作为信息融合核心,将不同量测按统计特性加权,实现优势互补。基于PSINS开源工具箱搭建的SINS/GNSS/ODO/NHC组合导航仿真,能够在GNSS失锁条件下利用非完整约束和里程计抑制惯性误差发散,广泛应用于无人驾驶、物流车辆自主定位等场景。本文围绕PSINS仿真环境,详细拆

weixin_29044713的博客 253

路径还原

O(E)做法 当d[]数组求出来后,假设从k出发,可以通过找出满足d[j]=d[k]+cost[k][j]的边cost[k][j]来找到前趋节点j,因此通过不断寻找前趋节点就能还原出最短路. O(V)做法 设一个prev[]数组,prev[j]表示j的前趋,每次当更新最短路时就更新prev数组,全部更新完后,通过不断找prev[j]直到j变为s就能还原出最短路. 转载于:http...

dashengchong6303的博客 383

德国冯哈勃 Faulhaber2342L012空心杯减速电机带编码器

为了制作平衡车,我在淘宝上面买了一个 Faulhaber2342L012空心杯减速电机电机,具体参数如下: 一:电机参数 型    号:德国冯哈勃Faulhaber带编码器空心杯减速电机2342L012  12V每分 钟 120转 工作电压: 12V 空载转速:8100RPM(转每分钟) 减速后速:120RPM(转每分钟) 直     径:30mm

u011511430的专栏 1万+

如何在数据库中存储一棵树

树形结构的数据在项目开发中比较常见,比如比较典型的是论坛主题留言。每一个主题(节点)可以有n个留言(子节点)。这些留言又可以有自己的留言。因此这种结构就是一颗树。本文讨论的是数据库中如何存储这种树形结构。假设有如下一棵树:方法一注意:本例中的数据库是SQLite,因此SQL语句只对SQLite有效,其他数据库可以参考该写法。要存储于数据库中,最简单直接的方法,就是存储每个元素的父节点ID。暂且把这...

weixin_33751566的博客 1517

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

智能车竞赛模糊PID代码与使用方法

本文给出了模糊PID的代码,以及模糊PID的程序使用方法、参数调整方法

piginthesouth的博客 9123

二叉树、自平衡二叉树和多叉树详解

二叉树、自平衡二叉树和多叉树简单介绍,以及排序方式

快乐的小三菊的博客 2403

上午题目复习ing

无线局域网,11b是常用的,2.4ghz,后来改进5ghz,有些字段可以工作在5g的字段802.11/11a/1h/11n,,,,,11b和11g还在2.4ghz工作。数据链路层 传输服务,数据链路维护,差错控制,arp ip到mac,rarp反过来,token ring,x.25,atm,ethernet,蓝牙10m,简化因特网,分散式网,快调频,短包,点对点,点多多点,2.4ghz,最高速率1mb/s。gsm:是时分多址,900m-1800m,微蜂窝是市区,微微风是室内,伞是盲点,

weixin_47120900的博客 894

【数据结构】多叉树的常见形式

多叉树的多种形态,和不同的的应用部分

doomwatcher的博客 2537

Doris数据过期策略:自动清理历史数据

在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。

软件工程实践的博客 556

【毕设实战】飞行器目标识别系统:基于YOLOv5的智能检测全流程教程,助你毕设脱颖而出

本文介绍了一个基于YOLOv5的飞行器目标识别系统的开发过程。系统包含数据采集与标注、模型训练、实时检测和UI界面四大模块。文章详细讲解了从环境搭建、数据标注到YOLOv5模型训练的全流程,包括如何划分数据集、配置参数和测试模型性能。同时提供了实时检测代码示例和UI界面开发思路,使读者能够快速实现一个完整的智能检测系统。该系统可应用于军事侦察、民用巡检等领域,具有较高的实用价值,适合作为计算机视觉相关的毕业设计项目。

FJN110的博客 108

多叉树介绍

二叉树的问题分析 二叉树的操作效率很高,但是依旧存在着问题,因为二叉树是需要加载到内存中的,当二叉树的节点少,不会出现什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题: 问题1:如果我们二叉树的结点中存放的数据是从文件中获取到的,那么在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),构建二叉树时,速度有影响 问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度. 由此我们引入了多叉树 多叉树介绍 在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点

技术积累,技术分享 4332

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

二叉树与多叉树

序言 多叉树 2-3树 B树 B+树 B*树 序言 二叉树的缺点 二叉树需要加载到内存中,如果节点少,没什么问题,若是节点非常多,就会带来问题 当构建二叉树时,需要进行多次I/O操作,构造速度会有影响 节点海量,会造成二叉树的高度非常大降低操作速度 多叉树 每个节点可以右多个子节点 B树 节点的度:此节点拥有子节点的个数称为节点的度 数的度:数中所有节点的度的最大值 B树通过重新组织节点,降低了数的高度 文件系统或是数据库系统利用了磁盘预先读取原理,将一个节点的大小设置为一个页(一个页的大小为4

wangzilong_2019的博客 1665

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

多叉树 mysql_多叉树实现类目体系

1. 引言电商类的网站(比如:京东)为了便于用户浏览商品,建立了一套类目体系,对商品进行各种粗细粒度的划分。类似地,用户画像的标签体系也划分多层级的结构。在做标签洞察时,需要将这种带有层级的体系序列化json,提供给前端。但是,标签体系是存储在MySQL数据库中,为平铺化的表结构,如何将其表达为具有层次的数据结构呢?多叉树(Multiway Tree)正好能完美地诠释类目体系,比如,一篇论文的结构...

weixin_42393526的博客 451

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

多叉树 [数据结构与算法][Java]

因为二叉树有一定的问题: 即使二叉树的操作效率高, 但是也存在问题: 二叉树需要加载的内存的时候, 如果二叉树的结点少, 那么没有什么问题, 但是如果二叉树的结点有很多(比如: 有一亿个结点), 就存在如下问题:

m0_57001006的博客 1268

数据结构6—多叉树

B树与B+树

2401_84284464的博客 819

数据结构基础:二叉树,堆,多叉树

二叉树是结合了数组和链表的优点和缺点(数组插入效率低,链表查找效率低) 二叉树的存储结构一般采用二叉链表,树中每一个结点都有一个数据域data还有两个分别用于指向该节点的左右儿子结点的指针域,通过这两个指针域建立了上下层结点的关系. 二叉树的一些特性就不详细说了,很多资料都有,直接看看典型的二叉树. 二叉查找树 二叉查找树是满足以下条件的二叉树: 1.左子树上的所有节点值均小于根

kingmicrosoft的专栏 4905

多叉树(多路查找树)

1.二叉树与 B 树 1.1二叉树存在的问题 二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树 二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题: 问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响 问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度 1.2多叉树的基本介绍 在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更

weixin_42178281的博客 1689

数据结构与算法——多叉树

1)二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿),就存在如下问题:2)问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响3)问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度。

weixin_45942515的博客 551

《数据结构》课程设计--c++多叉树

数据结构课程设计报告 c++实现多叉树及其可视化

zhuai.blog.youkuaiyun.com 1539
上一篇: 在数据库中建立一颗多叉树(其中一种方法)
下一篇: web前端方面知识小结,实现一个注册及登陆界面响应的接收处理并连接mysql(Mac环境下)
我先冲了xdm
博客等级 码龄6年 19粉丝 44原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值