java无限极树实现思路
时间: 2024-01-15 11:12:10 浏览: 104
JAVAMVC模式开发的无限极分类
实现一颗无限极树可以通过递归的方式实现。具体思路如下:
1. 定义树节点类,包含节点ID、节点名称、父节点ID、子节点列表等属性。
2. 创建树节点列表,将根节点加入列表中。
3. 以递归的方式遍历节点列表,对于每个节点,根据其父节点ID查找父节点,将其加入父节点的子节点列表中。
4. 遍历完节点列表后,即可得到一颗完整的无限极树。
以下是一个示例代码:
```java
public class TreeNode {
private int id;
private String name;
private int parentId;
private List<TreeNode> children;
public TreeNode(int id, String name, int parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
this.children = new ArrayList<>();
}
// getter and setter
public static void main(String[] args) {
// 构造节点列表
List<TreeNode> nodeList = new ArrayList<>();
nodeList.add(new TreeNode(1, "节点1", 0));
nodeList.add(new TreeNode(2, "节点2", 1));
nodeList.add(new TreeNode(3, "节点3", 1));
nodeList.add(new TreeNode(4, "节点4", 2));
nodeList.add(new TreeNode(5, "节点5", 4));
// 递归构造树
TreeNode root = new TreeNode(0, "根节点", -1);
buildTree(root, nodeList);
// 输出树
printTree(root, 0);
}
// 递归构造树
public static void buildTree(TreeNode parent, List<TreeNode> nodeList) {
for (TreeNode node : nodeList) {
if (node.getParentId() == parent.getId()) {
parent.getChildren().add(node);
buildTree(node, nodeList);
}
}
}
// 输出树
public static void printTree(TreeNode node, int level) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < level; i++) {
sb.append("-");
}
System.out.println(sb.toString() + node.getName());
for (TreeNode child : node.getChildren()) {
printTree(child, level + 1);
}
}
}
```
在上述示例代码中,我们定义了一个TreeNode类,其中包含节点ID、节点名称、父节点ID、子节点列表等属性。在main方法中,我们构造了一个节点列表,然后调用buildTree方法递归构造树。最后调用printTree方法输出树的结构。输出结果如下:
```
-根节点
--节点1
---节点2
----节点4
-----节点5
---节点3
```
阅读全文