Facebook
From TajnePrzezPoufne, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 293
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace BST
  8. {
  9.     class BST
  10.     {
  11.          
  12.         class Wezel
  13.         {
  14.             public int dane;
  15.             public Wezel lewe;
  16.             public Wezel prawe;
  17.             public Wezel(int wartosc)
  18.             {
  19.                 this.dane = wartosc;
  20.                 lewe = null;
  21.                 prawe = null;
  22.             }
  23.         }
  24.         class BinarySearchTree
  25.         {
  26.             public Wezel korzen;
  27.             static int zlicz;
  28.             public BinarySearchTree()
  29.             {
  30.                 korzen = null;
  31.             }
  32.              
  33.  
  34.             public Wezel dodajWezel(int dane)
  35.             {
  36.                 Wezel tmp = new Wezel(dane);
  37.                 if (korzen == null)
  38.                     korzen = tmp;
  39.                 zlicz++;
  40.                 return tmp;
  41.             }
  42.              
  43.  
  44.             public void Wstaw(Wezel korzen, Wezel nowyWezel)
  45.             {
  46.                 while (korzen != null)
  47.                 {
  48.                     if (nowyWezel.dane > korzen.dane)
  49.                     {
  50.                         if (korzen.prawe == null)
  51.                         {
  52.                             korzen.prawe = nowyWezel;
  53.                             break;
  54.                         }
  55.                         korzen = korzen.prawe;
  56.                     }
  57.                     else
  58.                     {
  59.                         if (korzen.lewe == null)
  60.                         {
  61.                             korzen.lewe = nowyWezel;
  62.                             break;
  63.                         }
  64.                         korzen = korzen.lewe;
  65.                     }
  66.                 }
  67.             }
  68.              
  69.  
  70.             public void inorder(Wezel korzen)
  71.             {
  72.                 if (korzen != null)
  73.                 {
  74.                     inorder(korzen.lewe);
  75.                     Console.Write(korzen.dane + " ");
  76.                     inorder(korzen.prawe);
  77.                 }
  78.             }
  79.             public void preorder(Wezel korzen)
  80.             {
  81.                 if (korzen != null)
  82.                 {
  83.                     Console.Write(korzen.dane + " ");
  84.                     preorder(korzen.lewe);
  85.                     preorder(korzen.prawe);
  86.                 }
  87.             }
  88.             public void postorder(Wezel korzen)
  89.             {
  90.                 if (korzen != null)
  91.                 {
  92.                     postorder(korzen.lewe);
  93.                     postorder(korzen.prawe);
  94.                     Console.Write(korzen.dane + " ");
  95.                 }
  96.             }
  97.         }
  98.         static void Main(string[] args)
  99.         {
  100.             BinarySearchTree bst = new BinarySearchTree();
  101.              
  102.             bst.Wstaw(bst.korzen, bst.dodajWezel(21));
  103.             bst.Wstaw(bst.korzen, bst.dodajWezel(19));
  104.             bst.Wstaw(bst.korzen, bst.dodajWezel(7));
  105.             bst.Wstaw(bst.korzen, bst.dodajWezel(19));
  106.             bst.Wstaw(bst.korzen, bst.dodajWezel(16));
  107.             bst.Wstaw(bst.korzen, bst.dodajWezel(13));
  108.             bst.Wstaw(bst.korzen, bst.dodajWezel(8));
  109.             bst.Wstaw(bst.korzen, bst.dodajWezel(22));
  110.  
  111.             Console.WriteLine("Inorder: ");
  112.             bst.inorder(bst.korzen);
  113.             Console.WriteLine();
  114.             Console.WriteLine("Preorder: ");
  115.             bst.preorder(bst.korzen);
  116.             Console.WriteLine();
  117.             Console.WriteLine("Postorder: ");
  118.             bst.postorder(bst.korzen);
  119.             Console.ReadKey();
  120.         }
  121.     }
  122. }