Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
3.8 kB
3
Indexable
Never
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Drzewo
{
    public class Wierzcholek
    {
        private int Wartosc;
        private Wierzcholek Lewy;
        private Wierzcholek Prawy;

        public Wierzcholek(int x)
        {
            Wartosc = x;
            Lewy = null;
            Prawy = null;
        }//Koniec konstruktora

        public void Dopisz(int x)
        {
            Random generator;
            double losowa;

            generator = new Random();

            losowa = generator.Next();

            if (losowa < 0.5) //idziemy do lewego
            {
                if (Lewy == null)
                {
                    Lewy = new Wierzcholek(x);
                }
                else
                {
                    Lewy.Dopisz(x);
                }//end if

            }
            else //idziemy do prawego
            {
                if (Prawy == null)
                {
                    Prawy = new Wierzcholek(x);
                }
                else
                {
                    Prawy.Dopisz(x);
                }//end if

            }//end if

        }//Koniec dopisywania

        public void preOrder()
        {
            Console.Write(Wartosc + " ");

            if (Lewy != null)
            {
                Console.Write("L");  //Po modyfikacji
                Lewy.preOrder();
            }
            else
            {
                Console.Write("*L");
            }//end if

            if (Prawy != null)
            {
                Console.Write("P");
                Prawy.preOrder();
            }
            else
            {
                Console.Write("*P");
            }//end if

        }//Koniec preorder

        public void inOrder()
        {
            if (Lewy != null) Lewy.inOrder();

            Console.Write(Wartosc + " ");

            if (Prawy != null) Prawy.inOrder();

        }//Koniec inorder

        public void postOrder()
        {
            if (Lewy != null) Lewy.postOrder();
            if (Prawy != null) Prawy.postOrder();

            Console.Write(Wartosc + " ");

        }//Koniec postOrder

        public void Usun()
        {
            if (Lewy != null) Lewy.Usun();
            if (Prawy != null) Prawy.Usun();

            Lewy = null;
            Prawy = null;
        }//Koniec usuwania


        //RBT = Random Binary Tree

        static void Main(string[] args)
        {
            Wierzcholek korzen;
            int N;
            int i;
            int max;
            int liczba;
            Random generator;

            max = 101;
            N = 15;
            generator = new Random();

            korzen = null;

            for (i = 0; i < N; i++)
            {
                liczba = generator.Next(max);

                if (korzen == null)
                {
                    korzen = new Wierzcholek(liczba);
                }
                else
                {
                    korzen.Dopisz(liczba);
                }//end if

            }//next i

            Console.WriteLine("preOrder:");
            korzen.preOrder();
            Console.WriteLine();

            Console.WriteLine("inOrder:");
            korzen.inOrder();
            Console.WriteLine();

            Console.WriteLine("postOrder:");
            korzen.postOrder();
            Console.WriteLine();

            Console.WriteLine("Usunięcie drzewa:");
            korzen.Usun();
            korzen.preOrder();
            Console.WriteLine();
            Console.ReadKey();
        }//Koniec main
    }

}//Koniec klasy
Leave a Comment