Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BST节点删除混淆[JaVa]_Java_Binary Search Tree - Fatal编程技术网

BST节点删除混淆[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

我已经用JaVa创建了一个二进制搜索树。不幸的是,“删除”功能不起作用。如果你能看一看,我将不胜感激。提前谢谢

问题:从树中删除节点后,无法按顺序打印树

节点:

二进制搜索树:


正如我所看到的,您没有重写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());