이유는 .compareTo을 사용할 수 없습니다 () 0에 BST에서 AA 노드의 키를 비교하면?

브라이언 :
  • 이 클래스에 포함 된 모든 코드가 아니라이없는 경우 충분히 내가 아니라 나머지를 추가합니다.
  • ()에 추가하는 키를 이용하여 BST의 정확한 위치 값을 추가하는 것을 의미한다. 키가 이미 존재하는 경우에는 아무 것도 할 필요가 없습니다.
  • 지정된 키가 트리에있는 경우) (포함은 True를 반환하도록되어

    ```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 );
        }
    }
    
    
    
제이슨 :

문제는 즉 int원시적이며, 정수가하는 그러나 박스 변화를 int.compareTo을 사용할 수 있도록 그에 필적 구현하지 않습니다. 당신은 단순히 대신 INT의 정수를 사용, 또는 대안 Integer.compare (1, 2)을 사용하는 프리미티브의 사용량을 유지할 수 있습니다.

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);
    }
}

추천

출처http://10.200.1.11:23101/article/api/json?id=410283&siteId=1