我目前有一個二進制搜索樹的插入方法的遞歸版本。我現在試圖得到相同的結果,但我希望它是一個迭代版本。我認爲我非常接近,如果有人能夠給我一些建議,我還需要做些什麼才能讓這個工作成爲現實,因爲我在這一點上很難受。二叉搜索樹遞歸到迭代版本
遞歸:
public void insert(E item)
{
root = insert(root, item, 0);
}
private BNode insert(BNode ptr, E item, int d)
{
if (ptr == null) {
++Size;
return new BNode(item, null, null, d);
}
int diff = item.compareTo(ptr.data);
if (diff < 0)
ptr.left = insert(ptr.left, item, d+1);
else if (diff > 0)
ptr.right = insert(ptr.right, item, d+1);
else
; // duplicates;
return ptr;
}
我對迭代版本目前代碼:
public void insert(E item)
{
BNode ptr = root;
int d = 0; // set the initial depth
if(ptr == null) {
++Size;
root = new BNode(item, null, null, d);
}
while(ptr != null) {
int diff = item.compareTo(ptr.data);
if(diff < 0)
ptr.left = new BNode(item, null, null, d+1); // *EDIT
else if (diff > 0){
ptr.right = new BNode(item, null, null, d+1); //*EDIT
}
else
break; // no duplicates
}
++Size;
}
}
究竟是什麼錯誤? –
@CyberneticTwerkGuruOrc當我對它進行測試時,我的版本不會編譯。項目沒有被插入到樹中。我失去了什麼問題? – DaBulls33
只是爲了幫助你更好地提出你的問題:在這樣的問題中,人們應該首先跟蹤你的代碼,自己面對錯誤或問題,然後嘗試解決它!所以這使得你的問題不那麼有吸引力,至少在合理的時間內你可能得不到你需要的答案。 – mok