Java树数据

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

具体而言,我需要表示以下内容:

  • 任何节点上的树都可以有任意数量的子节点
  • 每个节点(在根之后)只是一个String(其子节点也是Strings)
  • 我需要能够得到所有的孩子(某种列表或字符串数​​组),给定一个表示给定节点的输入字符串
  • 有没有可用的结构或我需要创建自己的(如果这样的实施建议会很好)。


    这里:

    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或任何其他对象的基本树结构。 实现简单的树来完成你所需要的事情是相当容易的。

    您需要添加的所有方法都是添加,删除,遍历和构造函数的方法。 NodeTree的基本构建块。


    又一个树形结构:

    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");
            }
        }
    }
    

    奖金
    请参阅完整的树:

  • 迭代器
  • 搜索
  • 的Java / C#
  • https://github.com/gt4dev/yet-another-tree-structure


    实际上在JDK中实现了一个非常好的树结构。

    看看javax.swing.tree,TreeModel和TreeNode。 它们被设计为与JTreePanel一起使用,但实际上它们是一个相当不错的树实现,并且没有任何东西阻止你在没有swing接口的情况下使用它。

    请注意,从Java 9开始,您可能不希望使用这些类,因为它们不会出现在“精简配置文件”中。

    链接地址: http://www.djcxy.com/p/6785.html

    上一篇: Java tree data

    下一篇: Practical uses of different data structures