我创建了一个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.
添加回答
举报
0/150
提交
取消