mikymaione

Algo_24_02_2017_T2

Jun 28th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.04 KB | None | 0 0
  1. public static int Algo_24_02_2017_T2(BST T, BST P, int x)
  2. {
  3.     BST last = null;
  4.     var S = new Stack<BST>();
  5.  
  6.     var R = new Stack<int>();
  7.     var n_figli = new Stack<bool[]>();
  8.     var ret = 0;
  9.  
  10.     while (S.Count > 0 || T != null)
  11.         if (T != null)
  12.         {
  13.             n_figli.Push(new bool[] {
  14.                 (T.Sx == null ? false : true),
  15.                 (T.Dx == null ? false : true)
  16.             });
  17.  
  18.             S.Push(T);
  19.             T = T.Sx;
  20.         }
  21.         else
  22.         {
  23.             T = S.Peek();
  24.  
  25.             if (T.Dx != null && T.Dx != last)
  26.                 T = T.Dx;
  27.             else
  28.             {
  29.                 S.Pop();
  30.                 P = (S.Count > 0 ? S.Peek() : null);
  31.  
  32.                 var figli = n_figli.Pop();
  33.                 var r_sx = (figli[0] ? R.Pop() : 0);
  34.                 var r_dx = (figli[1] ? R.Pop() : 0);
  35.  
  36.                 ret = r_sx + r_dx + 1;
  37.                 System.Console.WriteLine($"n: {T.key} | ret: {ret}");
  38.  
  39.                 R.Push(ret);
  40.                 last = T;
  41.  
  42.                 if (T.key % 2 == 0 && ret < x && P != null)
  43.                 {
  44.                     if (T == P.dx)
  45.                     {
  46.                         P.dx = Cancella(T);
  47.                         last = P.dx;
  48.                     }
  49.                     else
  50.                     {
  51.                         P.sx = Cancella(T);
  52.                         last = P.sx;
  53.                     }
  54.                 }
  55.  
  56.                 T = null;
  57.             }
  58.         }
  59.  
  60.     return ret;
  61. }
Add Comment
Please, Sign In to add comment