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

另一种思路是:

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

即可

参考资料和推荐阅读

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

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

相关推荐
励志成为嵌入式工程师15 分钟前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉1 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer1 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq1 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml41 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~1 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616881 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
aloha_7892 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山2 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js