Ниже приведен код, который я написал для случая, когда deleteItem находится в конечном узле. Даже если я приравниваю найденный листовой узел к «нулевому», то и тогда, когда я печатаю неупорядоченный порядок обхода дерева, этот элемент не удаляется и появляется на экране. Что мне не хватает?
public void deleteNode(T deleteItem)
{
TreeNode<T> node = root;
if(root == null)
{
System.out.print("Binary Tree does not exist");
System.exit(0);
}
while((node.data != deleteItem) && (node.leftNode != null || node.rightNode != null))
{
if(deleteItem.compareTo(node.data)<0)
node = node.leftNode;
else
node = node.rightNode;
}
//System.out.printf("deleting item is: %s\n", node.data);
if(node.data != deleteItem)
{
System.out.println("\ndeleteItem not found in the tree");
System.exit(0);
}
else
{
if(node.leftNode == null && node.rightNode == null)
{
node = null;
}
}
}