二叉树-如何删除元素;JAVA

二叉树-如何删除元素;JAVA,java,binary-tree,Java,Binary Tree,我已经有了一个工作代码来添加值。 问题是,当我添加值,并尝试用我刚刚编写的代码删除其中一些值时,它不起作用。 当我尝试删除一个值时,这是我在main类中放置的内容: public class node { int value; node left; node right; } 有人知道会出什么问题吗? 我是否缺少一个引用delete one或类似的函数? 请注意,我是java新手,所以如果您想帮助我,请将我视为初学者 我真的很感激如果有人能帮助我使我的删除功能的工作,因为现

我已经有了一个工作代码来添加值。 问题是,当我添加值,并尝试用我刚刚编写的代码删除其中一些值时,它不起作用。 当我尝试删除一个值时,这是我在main类中放置的内容:

public class node {
    int value;
   node left;
   node right;
}
有人知道会出什么问题吗? 我是否缺少一个引用delete one或类似的函数? 请注意,我是java新手,所以如果您想帮助我,请将我视为初学者 我真的很感激如果有人能帮助我使我的删除功能的工作,因为现在它没有做任何事情

编辑:

要添加值的代码:

binarytree tree= new binarytree;
node root=null;
root=tree.delete(root,4);

如前所述,我可以很好地添加值,当我尝试删除它们时会出现问题。

您的代码应该可以工作。可能您插入元素的方式有问题。你能分享你的完整代码吗?

`if(temp==null){return null;}else{return temp;}`我不喜欢用
null
值蒙混过关,但这是在冒险。这是二叉树还是二叉搜索树?似乎是二进制搜索树。这也是什么:
node root=null;root=tree.delete(root,4)
您正在从空根目录中删除
4
?您需要重新思考delete在纸上的实际工作方式,并对其进行编码。您遇到的错误是什么?如果您得到的输出不正确,请输入实际输出和不正确输出。recadd的第一个If中缺少一个else。我的建议是在每次插入和删除后打印您的树,这样您就可以看到它的正确结构。这是一个用于树的打印机:您可以像这样使用它:BinaryTreePrinter=new BinaryTreePrinter(root);打印机打印(系统输出);另外,root=tree.delete(root,4);是错误的,因为此时root为null。在类中可能需要这样的方法:publicvoiddelete(intval){root=delete(root,val);},然后简单地调用tree.delete(4);
binarytree tree= new binarytree;
node root=null;
root=tree.delete(root,4);
void recadd(node a, int val) {
    if (val<a.value) {
        if (a.left==null){
            a.left=new node (val);
        }
    }
    else
    {
        if(a.right==null) {
            a.right=new node(val);
        }
        else {
            recadd(a.right, val);
        }
    }
}
void add(int val){
    node k = new node (val);
if (root==null)
{
    root = k;
}
else
{
    recadd(root, val);
}
}