【问题标题】:Looking for a java library that has implemented Binary Tree [closed]寻找实现二叉树的java库[关闭]
【发布时间】:2012-03-28 14:52:10
【问题描述】:

有没有我可以使用的具有二叉树的 java 库?我不期待测试和实现我自己的。

【问题讨论】:

  • 你需要二叉树做什么?
  • 基本上java.util.TreeSet是一个红黑二叉树,是平衡的二叉搜索树。不过,这取决于您的需求。
  • 是的 - 我想存储的二叉树不需要平衡。此外,它不是二叉搜索树。我正在寻找每个节点都有左右孩子的基本实现。
  • 根据您的最后评论,在 java 中有一个链表,每个节点都有左节点和子节点。

标签: java binary-tree


【解决方案1】:

Java 标准 API 仅包含普遍有用且难以实现的库。一个基本的树很容易实现:

class BinaryTree {
    BinaryTree left;
    BinaryTree right;
    Object value;
}

非平凡的树并不是普遍有用的:要么它们需要作为应用程序数据模型的一部分,使用特定领域的类更好地建模(组件具有子组件的列表),要么它们被用作特定算法的一部分。算法通常需要节点的特定结构(例如,保持树平衡所需的节点的颜色或权重),因此通用树节点没有什么意义。

【讨论】:

  • 谢谢@Joni - 这是有道理的。我想我想当然地认为它必须在那里——但事实并非如此。我将为我的应用实现它。
  • 您对基本树的看法是正确的,但肯定有一些非平凡的 BST 实现的部分与任何东西一样普遍有用,例如查找最低值和插入/删除(和平衡),不要'你觉得呢?
  • 可以在 BST 中找到最高/最低,但我看不出如何进行适用于所有树类型的一般插入或删除。另请注意,问题是关于通用二叉树,对排序没有保证或要求,而不是关于 BST。
【解决方案2】:

http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html

基于红黑树的 NavigableMap 实现。地图按自然排序 其键的顺序,或由在地图创建时提供的比较器,取决于哪个 使用构造函数。

【讨论】:

  • 这对我不起作用。我正在寻找一个基本的二叉树。
【解决方案3】:

也许是 Swing 的 TreeModel 及其实现 - DefaultTreeModel

【讨论】:

    【解决方案4】:

    【讨论】:

    • 否 - 我想导入它并说:BinaryTree x =new BinaryTree();换句话说,我想重用一个工作包,类...
    【解决方案5】:

    这里有这个页面上的示例实现:-在页面的下半部分左右-

    http://cslibrary.stanford.edu/110/BinaryTrees.html

    【讨论】:

    • 我正在寻找一个经过测试的库。
    • @Esey,然后自己编写测试...
    • @Bart - 可能是另一个时间 :) - 我也可以自己实现它 - 但我正在实现一个“使用”二叉树的应用程序,如果我不必担心这个会很好另一块。感谢您的回复。
    • @Esey,您真的在寻找 BT(二叉树),而不是 BST(二叉搜索树)?对于 BT,树中的值之间没有顺序。需要这样一棵树有点奇怪......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 2011-01-04
    相关资源
    最近更新 更多