Usuwanie pojedyńczego elementu z drzewa- pilna pomoc

0

Witam

Potrzebuje pilnie pomocy, nie mogę dokończyć zadania. Napisałem praktycznie całość kodu brakuje mi tylko usuwania pojedyńczego elementu z drzewa. Nie mam pojęcia jak ma to wyglądać więc piszę z pomocą do Was, oto co udało mi się zrobić, nie ukrywam że to dosyć pilne ;) Pozdrawiam

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class liść_drzewa
    {
        public double  Wartość;
        public liść_drzewa lewy;
        public liść_drzewa prawy;
        public liść_drzewa Korzeń;
        
       
        public liść_drzewa(double x)
        {
            Wartość = x;
            lewy = null;
            prawy = null;
        }
        public void preorder()
        {
            Console.WriteLine(Wartość);
            if (lewy != null) lewy.preorder();
            if (prawy != null) prawy.preorder();
        }

        public void inorder()
        {
            if (lewy != null) lewy.inorder();
            Console.WriteLine(Wartość);
            if (prawy != null) prawy.inorder();
        }

        public void postorder()
        {
            if (lewy != null) lewy.postorder();
            if (prawy != null) prawy.postorder();
            Console.WriteLine(Wartość);
        }

        public void dopiszRBT(double p, double Max, Random Generator)
        {
            double pomoc;
            double wart;

            pomoc = Generator.NextDouble();
            wart = Max * Generator.NextDouble();

            if (pomoc <= p)
            {
                if (lewy != null) lewy.dopiszRBT(p, Max, Generator); else lewy = new liść_drzewa(wart);
            }
            else
            {
                if (prawy != null) prawy.dopiszRBT(p, Max, Generator); else prawy = new liść_drzewa(wart);
            }
        }

        public bool czy_jest(double x)
        {
            bool wynik;
            wynik = false;
            if (x == Wartość) wynik = true;
            else
            {
                if (lewy != null) wynik = lewy.czy_jest(x);
                if (wynik == false)
                    if (prawy != null) wynik = prawy.czy_jest(x);
            }
            return wynik;
        }

        public void usuń_drzewo()
        {
            if (lewy != null) lewy.usuń_drzewo();
            if (prawy != null) prawy.usuń_drzewo();
            lewy = null;
            prawy = null;
        }
    }


}

1 użytkowników online, w tym zalogowanych: 0, gości: 1