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

另一种思路是:

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

即可

参考资料和推荐阅读

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

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

相关推荐
yuanbenshidiaos2 分钟前
c++------------------函数
开发语言·c++
yuanbenshidiaos6 分钟前
C++----------函数的调用机制
java·c++·算法
程序员_三木14 分钟前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊24 分钟前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
tianmu_sama30 分钟前
[Effective C++]条款38-39 复合和private继承
开发语言·c++
黄公子学安全33 分钟前
Java的基础概念(一)
java·开发语言·python
liwulin050634 分钟前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr
jackiendsc38 分钟前
Java的垃圾回收机制介绍、工作原理、算法及分析调优
java·开发语言·算法
Yuan_o_39 分钟前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
Oneforlove_twoforjob43 分钟前
【Java基础面试题027】Java的StringBuilder是怎么实现的?
java·开发语言