gpt4 book ai didi

java - BST : Constructor Node in class. 节点无法应用于给定类型;

转载 作者:行者123 更新时间:2023-12-01 10:08:02 25 4
gpt4 key购买 nike

我正在尝试实现 BST。我正在努力向节点添加键和值。这是我到目前为止所拥有的。但我不断得到

constructor Node in class EMD<K,V>. Node cannot be applied to given types. 
required: no arguments; found K,V;

如何解决这个问题?

class EMD<K extends Comparable<K>, V> implements RangeMap<K,V> {
class Node {
Node left;
Node right;
KVPair<K,V> kv;
}

private Node root;

public void add(K key, V value) {
// TODO: Implement me(basic score)
root = add (root, key, value);
}
private Node add(Node x, K key, V value){
if (x == null){
return new Node (key, value);
int cmp = key.compareTo(x.key);
if (cmp < 0){
x.left = add(x.left, key, value);}
else if (cmp > 0 ){
x.right = add(x.right, key, value);}
else if (cmp == 0){
x.value = value;}
}
return x;
}

最佳答案

在 Java 中,如果您不提供显式构造函数,那么编译器将为您插入一个隐式、无参数或“默认”构造函数,该构造函数除了调用其父类(super class)构造函数之外什么也不做。这发生在您的 Node 类中。

但是,当您尝试在此行上创建节点时:

return new Node (key, value);

您试图将 2 个参数传递给默认的无参数构造函数,因此会出现错误。 Java 不会自动获取参数并将它们一次分配给实例变量。这不是 Java 中构造函数的工作方式。

您可以在 Node 类中显式声明采用 2 个参数的 Node 构造函数。

Node(K k, V v) {
// Use k and v appropriately here.
}

关于java - BST : Constructor Node in class. 节点无法应用于给定类型;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com