BST节点删除混淆[JaVa]
我已经用JaVa创建了一个二进制搜索树。不幸的是,“删除”功能不起作用。如果你能看一看,我将不胜感激。提前谢谢 问题:从树中删除节点后,无法按顺序打印树 节点: 二进制搜索树:BST节点删除混淆[JaVa],java,binary-search-tree,Java,Binary Search Tree,我已经用JaVa创建了一个二进制搜索树。不幸的是,“删除”功能不起作用。如果你能看一看,我将不胜感激。提前谢谢 问题:从树中删除节点后,无法按顺序打印树 节点: 二进制搜索树: 正如我所看到的,您没有重写equals/hashCode方法,因此您无法找到节点(5),因为您创建了新实例。如果在Test.java中更改代码: tree.insert(new Node(12)); System.out.println(); tree.inorder(tree.getRoot()); // Start
正如我所看到的,您没有重写equals/hashCode方法,因此您无法找到节点(5),因为您创建了新实例。如果在Test.java中更改代码:
tree.insert(new Node(12));
System.out.println();
tree.inorder(tree.getRoot());
// Start changes
Node node5 = new Node(5);
tree.insert(node5);
System.out.println();
tree.inorder(tree.getRoot());
// End changes
tree.insert(new Node(9985));
// -cut some code
//DELETION
System.out.println("DELETION");
tree.delete(node5);
System.out.println();
tree.inorder(tree.getRoot());
它将打印结果,因为我可以看到您没有覆盖equals/hashCode方法,所以您无法找到节点(5),因为您创建了新实例。如果在Test.java中更改代码:
tree.insert(new Node(12));
System.out.println();
tree.inorder(tree.getRoot());
// Start changes
Node node5 = new Node(5);
tree.insert(node5);
System.out.println();
tree.inorder(tree.getRoot());
// End changes
tree.insert(new Node(9985));
// -cut some code
//DELETION
System.out.println("DELETION");
tree.delete(node5);
System.out.println();
tree.inorder(tree.getRoot());
它将打印结果为什么不使用哈希/树映射并实现自定义BST?为什么不使用哈希/树映射并实现自定义BST?非常感谢@BerkYılmaz如果正确的话,你能接受我的回答(点击投票箭头下方左侧的勾号)或upvote吗?非常感谢@BerkYılmaz如果答案正确,你能接受我的答案(点击投票箭头下方左侧的勾号)还是向上投票?
public class Test {
public static void main(String[] args) {
//CREATION
System.out.println("CREATION");
BinarySearchTree tree = new BinarySearchTree();
int[] a = {54, 32, 76, 7, 44, 63, 99};
tree.createBST(a);
System.out.println();
System.out.print("The root of the tree is: ");
System.out.println();
System.out.print("Maximum Node is: ");
tree.inorder(tree.maximum(tree.getRoot()));
System.out.println();
System.out.print("Minimum Node is: ");
tree.inorder(tree.minimum(tree.getRoot()));
System.out.println();
//INSERTION
System.out.println("INSERTION");
tree.insert(new Node(25));
tree.inorder(tree.getRoot());
tree.insert(new Node(485));
System.out.println();
tree.inorder(tree.getRoot());
tree.insert(new Node(12));
System.out.println();
tree.inorder(tree.getRoot());
tree.insert(new Node(5));
System.out.println();
tree.inorder(tree.getRoot());
tree.insert(new Node(9985));
System.out.println();
tree.inorder(tree.getRoot());
System.out.println();
System.out.print("Maximum Node is: ");
tree.inorder(tree.maximum(tree.getRoot()));
System.out.println();
System.out.print("Minimum Node is: ");
tree.inorder(tree.minimum(tree.getRoot()));
System.out.println();
//SEARCH
System.out.println("SEARCH");
tree.inorder(tree.search(tree.getRoot(), 32));
System.out.println();
//DELETION
System.out.println("DELETION");
tree.delete(new Node(5));
tree.inorder(tree.getRoot());
}
}
tree.insert(new Node(12));
System.out.println();
tree.inorder(tree.getRoot());
// Start changes
Node node5 = new Node(5);
tree.insert(node5);
System.out.println();
tree.inorder(tree.getRoot());
// End changes
tree.insert(new Node(9985));
// -cut some code
//DELETION
System.out.println("DELETION");
tree.delete(node5);
System.out.println();
tree.inorder(tree.getRoot());