Pourquoi ne puis-je pas utiliser .compareTo () lorsque l'on compare la clé d'aa noeud dans un BST à 0?

Bryan:
  • Ce n'est pas tout le code contenu dans la classe, mais si cela ne suffit pas je vais ajouter le reste aussi.
  • add () vise à ajouter la valeur à la position correcte dans la BST à l'aide de la touche. Si la clé existe déjà, ne rien faire.
  • contains () est censé revenir Vrai si la clé spécifiée est dans l'arbre

    ```public class Node
    {
        public Node left;
        public Node right;
        public int key;
        public String value;
    
        public void add ( int key, String value )
        {
            if ( key.compareTo ( this.key ) < 0)
            {
                if ( left != null )
                    left.add ( key, value )
                else
                    left = new Node ( key, value );
            }
            else if ( key.compareTo ( this.key ) > 0 )
            {
                if ( right != null )
                    right.add ( key, value );
                else
                    right = new Node ( key, value);
            }
            else
                this.value = value;
        }
    
        public boolean contains ( int key )
        {
            if ( this.key == ( key ) )
                return value;
            if ( key.compareTo ( this.key ) < 0 )
                return left == null ? null : left.contains ( key );
            else
                return right == null ? null : right.contains ( key );
        }
    }
    
    
    
Jason:

Le problème est que intest primitif et celui - ci ne met pas en œuvre Comparable de sorte que vous ne pouvez pas utiliser int.compareTo, mais la variation boxed ne entier. Vous pouvez simplement utiliser des entiers au lieu de int, ou bien utiliser Integer.compare (1, 2) et conserver votre utilisation de primitives.

public static class Node {
    public Node left;
    public Node right;
    public Integer key;
    public String value;

    public Node(Integer key, String value) {
        this.key = key;
        this.value = value;
    }

    public void add(Integer key, String value) {
        if (key.compareTo(this.key) < 0) {
            if (left != null)
                left.add(key, value);
            else
                left = new Node(key, value);
        } else if (key.compareTo(this.key) > 0) {
            if (right != null)
                right.add(key, value);
            else
                right = new Node(key, value);
        } else
            this.value = value;
    }

    public boolean contains(Integer key) {
        if (this.key.intValue() == (key)) {
            return true;
        }
        if (key.compareTo(this.key) < 0)
            return left == null ? null : left.contains(key);
        else
            return right == null ? null : right.contains(key);
    }
}

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=410287&siteId=1
conseillé
Classement