非 Arg 构造函数 Java

Non-Arg constructor Java

我正在调用方法中的构造函数来插入新节点 nodes.While我正在添加新节点 默认构造函数正在创建具有默认值的新节点。我只想使用插入方法插入值,如下面的代码所示。有什么办法可以避免第一个节点成为默认节点。

class Node {
    Node right, left;
    int data = 0;
    Node() {

    }
    Node(int data) {
        this.data = data;
    }
    public void insert(int value) {
        if (value <= data) {
            if (left == null) {
                left = new Node(value);
            } else {
                left.insert(value);
            }
        } else {
            if (right == null) {
                right = new Node(value);
            } else {
                right.insert(value);
            }
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Node new_node=new Node();//creating first node with 0 value
        new_node.insert(5);
        new_node.insert(4);
        new_node.insert(9);
        new_node.insert(23);
        new_node.insert(70);
        new_node.display();
    }
}

您可以使用第一个值作为第一个元素:

Node new_node = new Node(5); // create 1st node with 1st value

或者您可以使用您不希望出现在列表中的值定义一个新的默认构造函数(比方说 -1),但是您必须小心列表 它实际上不是列表的一部分,这使得其他操作的实现变得更加棘手:

Node() { data = -1; }

但这一切都是一个更大问题的征兆:您不应该在 Node class 中处理列表的头部。最好新建一个class,我们就叫它MyList,在上面定义一个Node head属性,所有的insert/update/delete/search操作都应该在那个class.

保持head分离很重要,因为会有修改head的操作。例如,您的 insert() 方法不考虑要插入的节点应位于现有列表开头的情况。