Java 使用字符串作为BST键值

Java 使用字符串作为BST键值,java,binary-search-tree,Java,Binary Search Tree,我有一个存储对象的二进制搜索树。为了插入对象,我使用Int值作为键。我通过调用对象的方法获得该值,如下所示: public class Tree { // The root node of the tree which is null; private Node root; private double largest; private Node insert (Node tree, Element d) { if (tree == nu

我有一个存储对象的二进制搜索树。为了插入对象,我使用Int值作为键。我通过调用对象的方法获得该值,如下所示:

public class Tree
{
    // The root node of the tree which is null;
    private Node root;
    private double largest;

    private Node insert (Node tree, Element d)
    {
        if (tree == null)  return new Node(d);
        else if (d.getPlaceInTable() < tree.data.getPlaceInTable()) tree.left = insert (tree.left, d);
        else if (d.getPlaceInTable() > tree.data.getPlaceInTable()) tree.right = insert (tree.right, d);

    return tree;

    }

    public void insert (Element d)
    {
    root = insert (root, d);
    }
公共类树
{
//树的根节点为空;
私有节点根;
私人双最大;
专用节点插入(节点树,元素d)
{
如果(tree==null)返回新节点(d);
else如果(d.getPlaceInTable()tree.data.getPlaceInTable())tree.right=insert(tree.right,d);
回归树;
}
公共空白插入(要素d)
{
根=插入(根,d);
}

但是,如果我想使用元素名称作为一个键值,即字符串,该怎么做?我应该使用compareTo()方法吗?我知道如何比较string1.compareTo(string2)但我真的不知道如何在这种情况下使用它。如果您有任何建议,我真的很感激。

是的,字符串实现了可比性,所以您可以这样做

d.getName().compareTo(tree.data.getName())<0
用于左侧节点和
d.getName().compareTo(tree.data.getName())>=0,用于右节点


还要注意的是,在原始代码中,当值相等时,您不会在树中插入任何内容。

是的,字符串实现可比较,因此您可以执行
d.getName().compareTo(tree.data.getName())>0
谢谢您的帮助,它就像我想象的那样工作。是的,我知道,我忽略了相等的值,因为我存储的元素来自元素周期表,它们彼此不相等。