Untitled
unknown
plain_text
2 years ago
3.8 kB
7
Indexable
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 klasyEditor is loading...
Leave a Comment