我必须实现二进制搜索树来存储来自美国城镇的40,000个邮政编码,我需要搜索,插入,删除,getSize,getHeight,byLevel,preOrder和inOrder。我已经完成了insert,getSize和getHeight。我想知道你们/ gals是否可以查看我的搜索方法并给我一些关于我的代码是否会起作用的反馈。在我完成项目之前,我真的没有办法测试它,但我想知道它是否有效。我不能在这个任务上使用递归。我有一个名为BSTNode的辅助类,我将添加我的代码!
这显然是我的搜索方法。
public BSTNode<E> search(E it) {
BSTNode<E> temp = new BSTNode<E>(it);
if(root == null){
return null;
}
BSTNode<E> parent = null;
BSTNode<E> node = root;
while (node != null) {
parent = node;
int compareResult = it.toString().compareTo(node.getElement().toString());
if (compareResult < 0) {
node = node.getLeft();
} else if (compareResult > 0) {
node = node.getRight();
} else {
// duplicate
return temp;
}
}
这是我的BSTNode辅助方法。
public class BSTNode<E> {
private BSTNode<E> parent;
private BSTNode<E> left;
private BSTNode<E> right;
private E element;
public BSTNode(){
element = null;
left = null;
right = null;
}
public BSTNode (E it){
element = it;
right = null;
left = null;
parent = null;
} public BSTNode(E it, BSTNode parentValues, BSTNode leftValues, BSTNode rightValues){
element = it;
parent = parentValues;
left = leftValues;
right = rightValues;
}
public BSTNode<E> getLeft(){
return left;
}
public BSTNode<E> getRight(){
return right;
}
public BSTNode<E> getParent(){
return parent;
}
public E getElement(){
return element;
}
public void setLeft(BSTNode<E> leftValue){
left = leftValue;
}
public void setRight(BSTNode<E> rightValue){
right = rightValue;
}
public void setParent(BSTNode<E> parentValues){
parent = parentValues;
}
public void setElement(E it){
element = it;
} }