AvengersAssemble

Untitled

Feb 11th, 2015
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.54 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using Unit4.CollectionsLib;
  5.  
  6. namespace Lab08_02
  7. {
  8.     class Program
  9.     {
  10.         public static Random rnd = new Random();
  11.         public static BinTreeNode<int> RandomSearchTree()
  12.         {
  13.  
  14.             BinTreeNode<int> t = new BinTreeNode<int>(rnd.Next(1, 100));
  15.             for (int i = 0; i < 2; i++)
  16.             {
  17.                 AddTosearchTree(t, rnd.Next(1, 100));
  18.             }
  19.             return t;
  20.         }
  21.  
  22.         public static void AddTosearchTree(BinTreeNode<int> t, int x)
  23.         {
  24.             if (t.GetRight() == t.GetLeft())
  25.             {
  26.                 if (t.GetInfo() > x)
  27.                     t.SetLeft(new BinTreeNode<int>(x));
  28.                 else
  29.                     t.SetRight(new BinTreeNode<int>(x));
  30.             }
  31.             else
  32.             {
  33.                 if (t.GetLeft() == null)
  34.                 {
  35.                     if (t.GetInfo() >= x)
  36.                         t.SetLeft(new BinTreeNode<int>(x));
  37.                     else
  38.                         AddTosearchTree(t.GetRight(), x);
  39.                 }
  40.                 else
  41.                 {
  42.                     if (t.GetRight() == null)
  43.                     {
  44.                         if (t.GetInfo() < x)
  45.                             t.SetRight(new BinTreeNode<int>(x));
  46.                         else
  47.                             AddTosearchTree(t.GetLeft(), x);
  48.                     }
  49.                     else
  50.                         if (t.GetInfo() >= x)
  51.                             AddTosearchTree(t.GetLeft(), x);
  52.                         else
  53.                             AddTosearchTree(t.GetRight(), x);
  54.  
  55.                 }
  56.  
  57.             }
  58.         }
  59.  
  60.         public static bool IfExist(int num, BinTreeNode<int> tr)
  61.         {
  62.             if (tr.GetRight() == tr.GetLeft())
  63.                 return false;
  64.             if (num == tr.GetInfo())
  65.                 return true;
  66.             if (tr.GetInfo() > num)
  67.             {
  68.                 if (tr.GetLeft() == null)
  69.                     return false;
  70.                 return IfExist(num, tr.GetLeft());
  71.             }
  72.             else if (tr.GetInfo() < num)
  73.             {
  74.                 if (tr.GetRight() == null)
  75.                     return false;
  76.                 return IfExist(num, tr.GetRight());
  77.             }
  78.             return false;
  79.         }
  80.  
  81.  
  82.         public static BinTreeNode<int> ArrayToSearchTree(int[] arr)
  83.         {
  84.             BinTreeNode<int> t = new BinTreeNode<int>(arr[0]);
  85.             for (int i = 0; i < arr.Length; i++)
  86.             {
  87.                 AddTosearchTree(t, arr[i]);
  88.             }
  89.             return t;
  90.         }
  91.  
  92.         private static Queue<int> q = new Queue<int>();
  93.         public static void PostOrder(BinTreeNode<int> t)
  94.         {
  95.             if (t != null)
  96.             {
  97.                 PostOrder(t.GetLeft());
  98.                 PostOrder(t.GetRight());
  99.                 q.Insert(t.GetInfo());
  100.             }
  101.         }
  102.         public static BinTreeNode<int> CombineSearchTrees(BinTreeNode<int> t1, BinTreeNode<int> t2)
  103.         {
  104.             PostOrder(t1);
  105.             PostOrder(t2);
  106.             if (!q.IsEmpty())
  107.             {
  108.                 BinTreeNode<int> t = new BinTreeNode<int>(q.Remove());
  109.                 while (!q.IsEmpty())
  110.                 {
  111.                     AddTosearchTree(t, q.Remove());
  112.                 }
  113.                 return t;
  114.             }
  115.             return new BinTreeNode<int>(0);
  116.         }
  117.  
  118.         public static bool IsSearchTree(BinTreeNode<int> t)
  119.         {
  120.             if (t.GetLeft() == t.GetRight())
  121.                 return true;
  122.             else
  123.             {
  124.                 if (t.GetLeft() != null)
  125.                 {
  126.                     if (t.GetLeft().GetInfo() > t.GetInfo())
  127.                         return IsSearchTree(t.GetLeft());
  128.                     return false;
  129.                 }
  130.                 if (t.GetRight() != null)
  131.                 {
  132.                     if (t.GetRight().GetInfo() <= t.GetInfo())
  133.                         return IsSearchTree(t.GetRight());
  134.                     return false;
  135.                 }
  136.                 return IsSearchTree(t.GetLeft()) && IsSearchTree(t.GetRight());
  137.             }
  138.         }
  139.  
  140.  
  141.         static void Main(string[] args)
  142.         {
  143.             BinTreeNode<int> t1 = RandomSearchTree();
  144.             BinTreeNode<int> t2 = RandomSearchTree();
  145.             BinTreeUtils.ShowTree(t1);
  146.             BinTreeUtils.ShowTree(t2);
  147.             BinTreeUtils.ShowTree(CombineSearchTrees(t1, t2));
  148.         }
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment