Java 二叉树中的Remove方法

Java 二叉树中的Remove方法,java,binary-tree,nodes,Java,Binary Tree,Nodes,我正在尝试创建一个从二叉树中删除节点的方法,但我遇到了一个问题,看起来还可以,但我有另一个方法来打印所有节点,在“删除”一个特定节点后,我使用了打印方法,但它会打印所有节点,包括我已经删除的节点 public class BinaryTree { Node root; Node n; private class Node { public Node f; //father public Node right; pub

我正在尝试创建一个从二叉树中删除节点的方法,但我遇到了一个问题,看起来还可以,但我有另一个方法来打印所有节点,在“删除”一个特定节点后,我使用了打印方法,但它会打印所有节点,包括我已经删除的节点

public class BinaryTree
{
    Node root;
    Node n;
    private class Node
    {
        public Node f; //father
        public Node right;
        public Node left;
        public int key; // key
        public String Student;
        public int Mark;

        public Node(int key)
        {
            right = null;
            left = null;
            f = null;
            Student = null;
            Mark = 0;
        }
    }

    public void remove()
    {
        System.out.println("");
        System.out.println("Which student do you want to delete? Write down his ID.");
        int id = Genio.getInteger();
        n = new Node(id);
        Node temporal = root;
        if(root == null)
        {
            System.out.println("This tree is empty");
        }
        else
        {
            while(temporal != null)
            {
                n.f = temporal;
                if(n.key == temporal.key)
                {

                    if(n.f.right == null && n.f.left == null)
                    {
                        n = null;
                        temporal = null;
                    }

                }
                else if(n.key >= temporal.key)
                {
                    temporal = temporal.right;
                }
                else
                {
                    temporal = temporal.left; 
                }
            }

        }

    }
}

尝试添加
this.key=key
节点
构造函数。这有点重要。@4castle我刚试过,但没什么变化。D:无论如何,谢谢!!