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 实体,更改变化的树节点,然后保存

另一种思路是:

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

即可

参考资料和推荐阅读

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

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

相关推荐
爱吃小胖橘4 小时前
Lua语法(2)
开发语言·unity·lua
聪明的笨猪猪4 小时前
Java Spring “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
_Power_Y4 小时前
SSM面试题学习
java·开发语言·学习
不要再敲了5 小时前
Spring Security 完整使用指南
java·后端·spring
SccTsAxR5 小时前
[初学C语言]关于scanf和printf函数
c语言·开发语言·经验分享·笔记·其他
害恶细君5 小时前
【超详细】使用conda配置python的开发环境
开发语言·python·jupyter·pycharm·conda·ipython
还是鼠鼠5 小时前
《黑马商城》微服务保护-详细介绍【简单易懂注释版】
java·spring boot·spring·spring cloud·sentinel·maven
她说..6 小时前
通过git拉取前端项目
java·前端·git·vscode·拉取代码
青衫码上行6 小时前
【从0开始学习Java | 第18篇】集合(下 - Map部分)
java·学习
我星期八休息6 小时前
C++异常处理全面解析:从基础到应用
java·开发语言·c++·人工智能·python·架构