为了账号安全,请及时绑定邮箱和手机立即绑定

二叉搜索树不删除节点

二叉搜索树不删除节点

小唯快跑啊 2021-10-27 18:56:07
我创建了一个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,它只是不删除它。这是我试图从中删除的树的图片:如果需要有关如何添加节点等的更多信息,那么我也可以提供。这太奇怪了,直到我尝试使用ID = 109.
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信