我在方法中调用构造函数以插入新节点。在添加新节点的同时,默认构造函数将使用默认值创建新节点。我只想使用插入方法插入值,如下面的代码所示。有什么办法可以避免将第一个节点设置为默认节点。
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();
}
}
答案 0 :(得分:3)
您可以将第一个值用作第一个元素:
Node new_node = new Node(5); // create 1st node with 1st value
或者您可以定义一个新的默认构造函数,使其具有一个您不希望出现在列表中的值(假设为-1
),但是您必须注意列表中的这个元素< em>确实不是列表的一部分,这使得实现其他操作更加棘手:
Node() { data = -1; }
但是所有这些都是更大问题的征兆:您不应该在Node
类中处理列表的开头。最好创建一个新类,将其命名为MyList
并在其上定义一个Node head
属性,所有插入/更新/删除/搜索操作都应在该类上实现。>
保持头部分开很重要,因为有些操作会修改head
。例如,您的insert()
方法不考虑插入节点应位于现有列表开头的情况。