2
我正在製作一個二叉搜索樹,它按字符串鍵排序。每個節點由與密鑰關聯的無序鏈接信息列表組成。樹是inorder(按字母順序排列)。二叉搜索樹刪除方法
我已完成大部分程序,但在刪除方法時遇到問題。
本質上它必須是遞歸的。該方法必須移除具有給定密鑰的節點,以便如果「架構」是給定的字符串,則必須遍歷樹並移除具有「架構」作爲其關鍵字的對應節點。
我有麻煩,因爲我必須刪除一個字符串。其他任務使用整數,我必須刪除最高或最低值。但是,我不會刪除具有最高或最低字符串值的節點,而是刪除等於指定字符串的節點。
我在問的是如何去做這個方法。如果您不想提供任何實際的代碼,您不必提供任何實際的代碼,但是一些指針或建議會很好。
謝謝。
//My attempt:
//Removes node with corresponding k
public void remove(String k) {
rootNode = remove(rootNode, k);
}
//Recursive method:
private KeyNode remove(KeyNode x, String k) {
if (x == null) {
return x;
}
//int comparison with compareTo
//if less than 0, left node = remove(left node, k)
//if greater than 0, right node = remove(right node, k)
//if left node and right node are both null, return null
//if left node is null, return left node
//if right node is null, return right node
//return
}
是在remove方法測試字符串相等您的問題?如果是這種情況,那麼使用'String.equals'。 – sprinter 2015-02-06 13:45:05
你可以顯示你的'Node'結構是什麼樣子,並提供一個簡單的示例樹,其中包含要刪除的節點? – Edd 2015-02-06 13:45:26
您在刪除方法中的評論基本上是正確的。您可以像使用整數一樣容易地將compareTo與字符串一起使用。 – sprinter 2015-02-06 13:51:04