我不明白为什么,我有一个由对象节点组成的二进制树,我不能真正发布所有代码,但它从文件中读取约会,并根据他们的姓氏插入,目前我有大约5个约会,我正试着添加基于姓氏的搜索功能。
它找到了正确的Node,但没有返回0,而是返回-1
我的搜索方法
private boolean contains(String x, BinaryTreeNode t){
if (t == null)
return false;
int compareResult = x.compareTo(t.info.getLastName());
System.out.println("Printing t.info " + t.info.getLastName() + "n Compare Result: " + compareResult + "n Printing X: " + x);
if(compareResult < 0){
// System.out.println("n Less Than n");
return contains(x,t.left); // Its in the left subtree
}
else if (compareResult > 0){
// System.out.println("n Greater Than n");
return contains( x, t.right); // Its in the right subtree
}
else {
System.out.println("n" + t.info + "n");
return true; // Found Match
}
}
我的输出
Printing Tree
Bob, Saget, Zafar, 1/3/4, 3/5/6
Kamer, Silo, Dkido, 3/5/6, 3/5/7
Kevin, Wu, Sine, 4/5/6, 3/5/6
Mano, Billi, Zafar, 4/5/6, 3/4/5
**************************************
* XYZ Hospital Appointment Maker *
* 1. Add Appointment *
* 2. Search by Last Name *
* 3. Print Tree *
* 4. Exit *
2
Enter Last Name: Kevin
Printing t.info Bob
Compare Result: 9
Printing X: Kevin
Printing t.info Kamer
Compare Result: 4
Printing X: Kevin
Printing t.info Kevin
Compare Result: -1
Printing X: Kevin
虽然字符串看起来相似,但可能有尾随空格。因此使用trim()
和compareTo()
方法。更改此
int compareResult = x.compareTo(t.info.getLastName());
至
int compareResult = x.compareTo(t.info.getLastName().trim());
您可能还想在调用compareTo
之前修剪x