1
我正在使用二叉搜索樹進行類分配。我試圖通過將新節點分配給遞歸方法參數來替換具有不同節點的節點。參數分配不能按預期工作
行node = minNode(node.right);
未按預期工作。它會修改參數SearchTreeNode<E> node
,但此更改不會傳播到this.overallRoot
。例如,如果樹的根是5,並且我們刪除5,並且替換爲7,this.overallRoot
仍然是5,即使參數節點已更改爲7.請參見下面的截圖。
任何想法我做錯了什麼?
public void remove(E data) {
if (this.overallRoot != null) {
this.removeData(this.overallRoot, data);
}
}
private void removeData(SearchTreeNode<E> node, E data) {
if (node.data == data) {
if (node.left == null && node.right == null) {
node = null;
} else if (node.left != null && node.right != null) {
node = minNode(node.right);
} else if (node.right == null) {
node = node.left;
} else if (node.left == null) {
node = node.right;
}
} else if (data.compareTo(node.data) < 0) {
this.removeData(node.left, data);
} else if (data.compareTo(node.data) > 0) {
this.removeData(node.right, data);
}
}
private SearchTreeNode<E> minNode(SearchTreeNode<E> node) {
if (node.left == null) {
return node;
}
return minNode(node.left);
}
請張貼您的代碼。 – shmosel
Stackoverflow給我錯誤,我試圖添加屏幕截圖以及調試更多信息 –