Удалить метод в двоичном дереве

Я пытаюсь создать метод для удаления узлов из двоичного дерева, но у меня возникла проблема, кажется, все в порядке, но у меня есть другой метод для печати всех из них, и после "удаления" определенного узла я использую метод печати но он печатает все из них, включая тот, который я уже удалил.

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; 
                }
            }

        }

    }
}

0 ответов

Другие вопросы по тегам