Java 动态树的实现思路分析

Java 动态树的实现

Survive by day and develop by night.

talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.

happy for hardess to solve denpendies.

目录

概述

树形菜单非常常见的需求。

需求:

设计思路

树形菜单我们常见的一种需求。

实现思路分析

1. 简单Java实现:

Java 动态树的实现思路如下:

  1. 定义树节点类:首先需要定义一个树节点类,包含节点值和子节点列表。
java 复制代码
class TreeNode {
    int value;
    List<TreeNode> children;
}
  1. 实现动态添加子节点的方法:通过给树节点类添加一个方法,可以动态地添加子节点。
java 复制代码
class TreeNode {
    int value;
    List<TreeNode> children;

    void addChild(TreeNode child) {
        if (children == null) {
            children = new ArrayList<>();
        }
        children.add(child);
    }
}
  1. 实现动态删除子节点的方法:同样给树节点类添加一个方法,可以动态地删除子节点。
java 复制代码
class TreeNode {
    int value;
    List<TreeNode> children;

    void removeChild(TreeNode child) {
        if (children != null) {
            children.remove(child);
        }
    }
}
  1. 实现遍历树节点的方法:可以使用递归或者栈来实现树的遍历。以下是一个递归的示例:
java 复制代码
class TreeNode {
    int value;
    List<TreeNode> children;

    void traverse() {
        System.out.println(value);
        if (children != null) {
            for (TreeNode child : children) {
                child.traverse();
            }
        }
    }
}
  1. 创建根节点和添加子节点:使用上述定义的树节点类,可以创建根节点并添加子节点。
java 复制代码
public class Main {
    public static void main(String[] args) {
        TreeNode root = new TreeNode();
        root.value = 1;

        TreeNode child1 = new TreeNode();
        child1.value = 2;
        root.addChild(child1);

        TreeNode child2 = new TreeNode();
        child2.value = 3;
        root.addChild(child2);

        root.traverse();
    }
}

2.建立父子表存储

1.建立一张父子关系表

2.遍历父子节点

3.返回节点控制

3.前端的对应的json 字符串方式

这种方式就是前段整理好对应的json格式的树形结构,后端存储的时候

保存这个json 串。

添加的时候增加到对应的一个字段中,这个字段存储的是json 字符。

当前台界面变化时,数据的组织形式发生改变,

当没有的时候,字段为空,不矛盾。

提供增加和修改的方法,

当修改的时候,

一种思路是:

先查出对应的json 串,把json 看成一个bean 实体,然后解析封装成一个实体,设置对应的bean 实体,更改变化的树节点,然后保存

另一种思路是:

当删除时,前端重新组包,格式化更新到数据库中。

即可

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

相关推荐
知彼解己5 分钟前
Eclipse Temurin:企业级 Java JDK 发行版的最佳实践
java·ide·eclipse
朱容zr3331336 分钟前
请解释“回表”的概念。
java·前端·数据库
不吃辣4907 分钟前
vibe coding | 如何做一个 AI 音乐生成工具?
java·人工智能·后端·ai·ai编程
Cachel wood17 分钟前
hands-on-modern-rl:动手学强化学习策略梯度reinforce
开发语言·python
NWU_LK19 分钟前
【WebFlux】第八篇 —— 自定义调度器
java
AI人工智能+电脑小能手25 分钟前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
wuminyu26 分钟前
JUC组件逐层剥离与深度剖析
java·linux·c语言·jvm·c++·算法
大黄说说27 分钟前
EF Core 避坑指南:查询慢、循环查询、并发更新问题如何解决
java·服务器·数据库
蓝斯49729 分钟前
一碰即传,重构跨设备文件分享体验
开发语言·python·重构
宁风NF32 分钟前
JavaScript:内存、垃圾回收、性能优化
开发语言·前端·javascript·学习·性能优化·es6