私はバイナリツリーの概念を理解しています。私はこのメソッドで再帰呼び出しが何をしているのか理解していません。BST削除方法の説明
public BSTNode<T> remove(T element, BSTNode<T> node) {
if (node == null)
return null;
else {
int cmp = element.compareTo((node.getValue()));
if (cmp == 0) {
if (node.getLeft() == null) {
size--;
return node.getRight();
}
if (node.getRight() == null) {
size--;
return node.getLeft();
}
// first, find smallest right
BSTNode<T> smallestRight = node.getRight();
while (smallestRight.getLeft() != null)
smallestRight = smallestRight.getLeft();
node.setValue(smallestRight.getValue());
node.setRight(remove(smallestRight.getValue(), node.getRight()));
return node;
} else if (cmp > 0) {
node.setRight(remove(element, node.getRight()));
return node;
} else {
node.setLeft(remove(element, node.getLeft()));
return node;
}
}
}
誰かが私にこの方法の概要を教えてもらえますか?
あなたはそれについて何を理解していませんか? – Raedwald