我有一種按照字母順序在BST中插入節點的方法,但是當我比較兩個字符串時我有一個無限循環,我認爲當它通過比較時值不會改變所以它再次與相同的值進行比較,導致無限循環。我認爲aux
和T
節點沒有使用遞歸方法更新值,因此它會反覆比較相同的值。向BST插入節點時出現無限循環
class BST {
BSTNode root;
public BST() {
root = null;
}
BSTNode aux = new BSTNode();
BSTNode insertNames(BSTNode T , int data, String name, double salary) {
if (root == null) {
T = new BSTNode();
T.setName(name);
root = T;
} else {
aux = root;
if (name.compareTo(aux.getName()) < 0)
aux.setLeft(insertNames(aux.getLeft(),data, name, salary));
else if (name.compareTo(aux.getName()) >= 0)
aux.setRight(insertNames(aux.getRight(),data, name, salary));
}
return T;
}
}
class Main{
public static void main(String[] args){
BST alpha=new BST();
BSTNode root = new BSTNode();
alpha.insertNames(root, 0, "Roy", 0);
alpha.insertNames(root, 0, "Joseph", 0);
}
}
的[我如何在Java中比較字符串?(可能的複製http://stackoverflow.com/questions/513832/how -do-i-compare-strings-in-java) – CodingNinja
當你逐行調試代碼時你發現了什麼?這應該告訴你爲什麼它有一個無限循環。 –
這些值不會改變,但我不明白爲什麼,當它到達else語句中的第一個if語句時,它會在遞歸部分再次出現時將值插入到'aux'左邊方法內部的參數沒有改變 – Valenzuela