我想将一个口袋妖怪类型(名称+号码)添加到二叉搜索树中。这是我的BinarySearchClass。
public void insert(Pokemon n) { // n is data/key
Node newNode = new Node(n);
if (root == null) { // empty tree
root = newNode;
} else {
Node current = root;
Node parent = null;
boolean flag = true;
while (flag) {
parent = current;
if (n < current.data) {
current = current.left;
if (current == null) {
parent.left = newNode;
flag = false;
}
} // if( n < current.data)
else {
current = current.right;
if (current == null) {
parent.right = newNode;
flag = false;
} // current == null}
} // else}
} // while(flag)
} // root != null
}
我得到的错误是n&lt; current.data。我不能这样做它只是比较口袋妖怪的数量,如Kadabra 64或Bulbsaur 1,但也使用整个口袋妖怪类型。我是否必须在我的Pokemon构造函数类中使用getNumber()? 使用此testDriver代码:
BinarySearchTree T = new BinarySearchTree();
for (int i = 0; i < userNumber; i++){
T.insert(poke[i]);
}
答案 0 :(得分:1)
的问题
n < current.data
是 n 不是原始类型变量。它代表一个Pokemon
对象。事情是:Java确实不支持运算符重载参考类型。
什么可行:
n.someNumericalField < current.data
(假设current.data也代表一些原始类型)
或者
n.lessThan(current.data)
(其中lessThan()
是你在你的Pokemon课程中实现的方法)
答案 1 :(得分:0)
您正在尝试将Pokemon
与数据进行比较。您需要执行以下操作:
//assuming that n.data is an integer or other comparable value
if (n.data < current.data)