Java如何覆盖通用V的compareto

问题描述 投票:0回答:1

我真的为此感到挣扎。我不知道为什么我不能将这个值与Node.value进行比较...

行:

if (value < currentNode.value) {

问题:运算符'

public class BinaryTree<V extends Comparable<V>> {
    Node<V> root;

    public void addNode(V value) {
        Node newNode = new Node(value);

        if (root == null) {
            root = newNode;
        } else {
            Node<V> currentNode = root;
            Node<V> parent;

            while (true) {
                parent = currentNode;

                if (value.compareTo(currentNode.value) == -1) {
                    currentNode = currentNode.left;

                    if (currentNode == null) {
                        parent.left = newNode;
                        return;
                    }
                } else {
                    currentNode = currentNode.right;

                    if (currentNode == null) {
                        parent.right = newNode;
                        return;
                    }
                }
            }
        }

    }

    public int compareTo(V v){
        if(this.V > v) return 1;
        if(this.V < v) return -1;
        else                   return 0;
    }
}
java binary-search-tree
1个回答
0
投票

您的节点还应该具有可扩展的类似Node<V extends Comparable<V>>的通用类型,并应使用该通用Node<V> root进行初始化-这适用于所有Node变量。

© www.soinside.com 2019 - 2024. All rights reserved.