incompatible types : java.lang.Object cannot be converted to T

public class binary_tree <T extends Comparable<T>> {
    private Node head;
    int size;

    class Node <T>{
        T data;
        Node left;
        Node right;
             
    Node(T data) {
        this.data = data;
        right = null;
        left = null;
    }
}    
    public Node addTo(Node node,T data){
        if(node == null){
            return new Node(data);
        }
        if(data.compareTo(node.data) < 0){
            node.left = addTo(node.left, data);
        }else if (data.compareTo(node.data) > 0) {
        node.right = addTo(node.right, data);
    } else {
        return data;
    }

    return data;  
    }

NetBeans выдает следующую ошибку введите сюда описание изображения

Я так понимаю это из-за того, что в Node и в binary_tree разные T. Как мне исправить эту ошибку?


Ответы (2 шт):

Автор решения: Антоша

Ну что-то типа... логика не очень ясна из Вашего примера

public class binary_tree <T extends Comparable<T>> {
    private Node<T> head;
    int size;

    static class Node<T> {
        T data;
        Node<T> left;
        Node<T> right;

        Node(T data) {
            this.data = data;
            right = null;
            left = null;
        }
    }

    public void addTo(Node<T> node, T data) {
        if (node == null) {
            return;
        }
        Node<T> newNode = new Node<T>(data);
        
        if (data.compareTo(node.data) < 0) {
            node.left = newNode;
        } else  {
            node.right = newNode;
        }
    }
}
→ Ссылка
Автор решения: hsz0r
public class binary_tree <T extends Comparable<T>> {
    private Node<T> head;
    int size;
    
    class Node <T extends Comparable<T>> {
        T data;
        Node<T> left;
        Node<T> right;

        Node(T data) {
            this.data = data;
            right = null;
            left = null;
        }
    }

    private Node addTo(Node<T> node, T data) {
        if (node == null) {
            return new Node(data);
        }
            
        if (data.compareTo(node.data) < 0) {
            node.left = addTo(node.left, data);
        } else if (data.compareTo(node.data) > 0) {
            node.right = addTo(node.right, data);
        } else {
            return node;
        }
        return node;
    }
    public void add(T data){
        head = addTo(head, data);
    }
}
→ Ссылка