Я не могу понять это ... Я могу вставлять и сортировать элементы без проблем, я могу удалять узлы после первой вставки, но в особом случае я пытаюсь удалить первый узел, вставленный для запуска дерево, оно ничего не делает.
Я не понимаю, почему возникает эта проблема, любая помощь в выяснении логики приветствуется.
Разветвленная версия моего кода повторяет проблему.
https://pastebin.com/hxcqpG1U
Вот мой метод удаления:
public void delete(KeyComp key) {
delete(_root, key);
}
private Node delete(Node root, KeyComp key) {
//TO-DO: DELETE AN ITEM IN THE TABLE, GIVEN THE KEY
//empty tree
if (root == null)
return root;
if (key.keyCompareTo(root.data) < 0)
root.left = delete(root.left, key);
else if (key.keyCompareTo(root.data) > 0)
root.right = delete(root.right, key);
else
{
// node with only one child or no child
if (root.left == null)
return root.right;
else if (root.right == null)
return root.left;
// node with two children: Get the inorder successor (smallest
// in the right subtree)
root.data = getMin(root.right).data;
// Delete the inorder successor
root.right = delete(root.right, root.data);
}
return root;
}