java如何生成通用树
时间: 2024-03-20 10:41:00 浏览: 38
在Java中生成通用树可以使用递归的方式实现,下面是一个简单的实现示例:
```java
public class TreeNode<T> {
private T data;
private List<TreeNode<T>> children;
public TreeNode(T data) {
this.data = data;
this.children = new ArrayList<>();
}
public void addChild(TreeNode<T> child) {
this.children.add(child);
}
// getter and setter methods omitted for brevity
}
public class Tree<T> {
private TreeNode<T> root;
public Tree(T data) {
this.root = new TreeNode<>(data);
}
public TreeNode<T> getRoot() {
return root;
}
public void setRoot(TreeNode<T> root) {
this.root = root;
}
// 添加子节点
public void addChild(TreeNode<T> parent, TreeNode<T> child) {
parent.addChild(child);
}
// 遍历树
public void traverse(TreeNode<T> node) {
System.out.println(node.getData());
for (TreeNode<T> child : node.getChildren()) {
traverse(child);
}
}
}
// 使用示例
public static void main(String[] args) {
Tree<String> tree = new Tree<>("A");
TreeNode<String> b = new TreeNode<>("B");
TreeNode<String> c = new TreeNode<>("C");
TreeNode<String> d = new TreeNode<>("D");
TreeNode<String> e = new TreeNode<>("E");
TreeNode<String> f = new TreeNode<>("F");
TreeNode<String> g = new TreeNode<>("G");
TreeNode<String> h = new TreeNode<>("H");
tree.addChild(tree.getRoot(), b);
tree.addChild(tree.getRoot(), c);
tree.addChild(b, d);
tree.addChild(b, e);
tree.addChild(c, f);
tree.addChild(c, g);
tree.addChild(d, h);
tree.traverse(tree.getRoot());
}
```
上述代码中,`TreeNode`表示树的节点,包含了节点数据和子节点列表;`Tree`表示树,包含了根节点和添加子节点、遍历树的方法。在使用示例中,先创建树的根节点A,然后添加子节点B和C,再分别为B和C添加子节点,最后遍历整棵树。