Java树的数据结构?

  • 回答 (2)
  • 关注 (0)
  • 查看 (61)

是否有一个好的可用(标准Java)数据结构来表示Java中的树?

具体来说,我需要表示以下内容:

  • 任何节点上的树可以有任意数量的子节点
  • 每个节点(在根之后)只是一个字符串(其子节点也是字符串)
  • 我需要能够得到所有的孩子(某种列表或字符串数​​组)给定一个输入字符串表示给定的节点

有没有可用的结构,或者我需要创建自己的?

奥特曼奥特曼奥特曼奥特曼提问于
秋之夕颜清念念不忘,必有回响回答于

又一个树形结构:

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");
        }
    }
}
心愿回答于

这里:

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。

扫码关注云+社区

领取腾讯云代金券