java从顶层节点往下递归查询得到树形
时间: 2023-10-04 18:08:26 浏览: 160
你可以通过递归遍历树的所有节点,然后将节点按照它们在树中的层级关系进行排列,从而得到树形结构。以下是一份Java代码示例,可以帮助你实现这个功能:
```java
public class TreeNode {
private int id; // 节点id
private String name; // 节点名称
private List<TreeNode> children; // 子节点列表
// 构造函数
public TreeNode(int id, String name) {
this.id = id;
this.name = name;
this.children = new ArrayList<>();
}
// 添加子节点
public void addChild(TreeNode child) {
children.add(child);
}
// 递归遍历树并输出树形结构
public void printTree(int level) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < level; i++) {
sb.append(" "); // 每一层缩进2个空格
}
sb.append("- ");
sb.append(name);
System.out.println(sb.toString());
for (TreeNode child : children) {
child.printTree(level + 1); // 递归输出子节点
}
}
// 测试代码
public static void main(String[] args) {
TreeNode root = new TreeNode(1, "root");
TreeNode node1 = new TreeNode(2, "node1");
TreeNode node2 = new TreeNode(3, "node2");
TreeNode node3 = new TreeNode(4, "node3");
TreeNode node4 = new TreeNode(5, "node4");
TreeNode node5 = new TreeNode(6, "node5");
root.addChild(node1);
root.addChild(node2);
node1.addChild(node3);
node1.addChild(node4);
node2.addChild(node5);
root.printTree(0);
}
}
```
这段代码定义了一个`TreeNode`类,表示树的节点。通过调用`addChild`方法可以添加子节点。`printTree`方法用于递归遍历树,并输出树形结构。最后,在`main`方法中创建了一个测试用的树,并调用`printTree`方法输出树形结构。你可以将这段代码复制到你的Java编译器中运行,看看输出结果。
阅读全文