二叉搜索树不删除节点

我创建了一个Binary Search Tree并尝试在添加它们后删除特定节点。我可以成功delete大约 5Nodes但是当我尝试删除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,它只是不删除它。


这是我试图从中删除的树的图片:

http://img4.mukewang.com/617931320001535202890215.jpg

如果需要有关如何添加节点等的更多信息,那么我也可以提供。这太奇怪了,直到我尝试使用ID = 109.


小唯快跑啊
浏览 123回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java