帮我使用JAVA写一个根据部门ID,部门父ID,生成显示的递归树
时间: 2024-05-08 07:14:42 浏览: 79
java递归遍历我的电脑,以树的形式显示出来
4星 · 用户满意度95%
好的,我可以为您提供一些思路和代码示例。以下是一个基于Java的实现递归树的示例代码:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RecursiveTree {
//部门数据,包括ID、父ID和名称
private static String[][] departmentData = {
{"1", null, "部门1"},
{"2", "1", "子部门1.1"},
{"3", "1", "子部门1.2"},
{"4", "2", "子部门1.1.1"},
{"5", "2", "子部门1.1.2"},
{"6", "4", "子部门1.1.1.1"}
};
public static void main(String[] args) {
//将部门数据转换为Map
Map<String, List<String>> departmentMap = new HashMap<>();
for (String[] department : departmentData) {
if (!departmentMap.containsKey(department[1])) {
departmentMap.put(department[1], new ArrayList<>());
}
departmentMap.get(department[1]).add(department[0] + ":" + department[2]);
}
//递归生成部门树
generateTree(departmentMap, null, 0);
}
private static void generateTree(Map<String, List<String>> departmentMap, String parentId, int level) {
if (departmentMap.containsKey(parentId)) {
List<String> children = departmentMap.get(parentId);
for (String child : children) {
String[] department = child.split(":");
System.out.println(getIndentation(level) + department[1]);
generateTree(departmentMap, department[0], level + 1);
}
}
}
private static String getIndentation(int level) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < level; i++) {
sb.append(" ");
}
return sb.toString();
}
}
```
在这个示例代码中,我们使用一个字符串数组来存储部门数据,其中每个部门包括一个ID、一个父ID和一个名称。我们通过将部门数据转换为Map来实现递归,并使用递归函数`generateTree`生成树形结构。最后,我们通过在每个节点前面添加空格来生成缩进,从而使树形结构更容易阅读。
请注意,这只是一个示例代码,实际上实现递归树可能还需要考虑其他因素,如性能等。希望这些代码对您有所帮助!
阅读全文