如何在Java中实现树数据结构?
2022-08-31 04:19:49
是否有任何标准的 Java 库类来表示 Java 中的树?
具体来说,我需要表示以下内容:
- 任何节点的子树都可以有任意数量的子项
- 每个节点(在根之后)及其子节点将具有字符串值
- 我需要获取给定节点的所有子节点(某种字符串列表或数组)及其字符串值(即,将节点作为输入并返回子节点的所有字符串值作为输出的方法)
是否有任何可用的结构,或者我是否需要创建自己的结构(如果是这样,实现建议会很棒)。
是否有任何标准的 Java 库类来表示 Java 中的树?
具体来说,我需要表示以下内容:
是否有任何可用的结构,或者我是否需要创建自己的结构(如果是这样,实现建议会很棒)。
这里:
public class Tree<T> {
private Node<T> root;
public Tree(T rootData) {
root = new Node<T>();
root.data = rootData;
root.children = new ArrayList<Node<T>>();
}
public static class Node<T> {
private T data;
private Node<T> parent;
private List<Node<T>> children;
}
}
这是一个基本的树结构,可用于或任何其他对象。实现简单的树来做你需要的事情是相当容易的。String
您需要添加的只是用于添加到、删除、遍历和构造函数的方法。是 的基本构建块。Node
Tree
另一种树结构:
public class TreeNode<T> implements Iterable<TreeNode<T>> {
T data;
TreeNode<T> parent;
List<TreeNode<T>> children;
public TreeNode(T data) {
this.data = data;
this.children = new LinkedList<TreeNode<T>>();
}
public TreeNode<T> addChild(T child) {
TreeNode<T> childNode = new TreeNode<T>(child);
childNode.parent = this;
this.children.add(childNode);
return childNode;
}
// other features ...
}
示例用法:
TreeNode<String> root = new TreeNode<String>("root");
{
TreeNode<String> node0 = root.addChild("node0");
TreeNode<String> node1 = root.addChild("node1");
TreeNode<String> node2 = root.addChild("node2");
{
TreeNode<String> node20 = node2.addChild(null);
TreeNode<String> node21 = node2.addChild("node21");
{
TreeNode<String> node210 = node20.addChild("node210");
}
}
}
奖金
看到成熟的树与: