Я создал Binary Search Tree
и пытаюсь удалить определенные узлы после их добавления.Я могу успешно delete
около 5 Nodes
, но когда я пытаюсь удалить Node with id 109
, он просто игнорирует его и ничего не происходит.Я пробовал много способов удалить его, и он просто не работает.
myBinaryTree.deleteNode(myBinaryTree.root, 109);
Вот метод delete
в моем двоичном дереве.
public Node deleteNode(Node root, int ID){
if (root == null) return root;
if (ID < root.ID)
root.leftChild = deleteNode(root.leftChild, ID);
else if (ID > root.ID)
root.rightChild = deleteNode(root.rightChild, ID);
else
{
if (root.leftChild == null)
return root.rightChild;
else if (root.rightChild == null)
return root.leftChild;
root.ID = minValue(root.rightChild);
root.rightChild = deleteNode(root.rightChild, root.ID);
}
return root;
}
int minValue(Node root)
{
int minv = root.ID;
while (root.leftChild != null)
{
minv = root.leftChild.ID;
root = root.leftChild;
}
return minv;
}
И мой Node
:
public class Node {
int ID;
Dancer.Gender gender;
int height;
Node leftChild;
Node rightChild;
Node(int ID, Dancer.Gender gender, int height) {
this.ID = ID;
this.gender = gender;
this.height = ID;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
}
ID
работает как задумано, то есть метод deleteNode
получает правильный идентификатор, он просто не удаляет его.
Вот изображение дерева, которым я являюсьпытаясь удалить из:
Если требуется дополнительная информация о том, как я добавляю узлы и т. д., я могу предоставить это также.Это настолько странно, что все работает отлично, пока я не попытаюсь удалить узел с ID = 109
.