Advertisement
warhomezx

GETPATH

Apr 30th, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.25 KB | None | 0 0
  1.  //Метод записывает в массив-массивов DATA все пути обхода к листьям дерева, data[0..K][0..N] K - кол-во листьев N - путь
  2.         //Описание алгоритма:
  3.         //При каждом добавлении эл-та в массив ему ищется "место" среди массивов путей(первый попавшийся==0)
  4.         //Это выполняется в цикле while
  5.         //Условие if на index проверяет, нужно ли элементу перезаписать предыдущие значения , до currlvl в текущий массив
  6.         //По дерево видно, что эл-ты, кратные 2 в этом не нуждаются (и нулевой элемент тоже, ему не от куда брать данные)
  7.         //currlvl - счётчик рекурсии, показывает, на каком уровне дерева в данный шаг рекурсии мы находимся (корень считается 0 уровнем!)
  8.         //Метод необходимо запускать от корня дерева, положив currlvl = 1
  9.         public void GetPath(Double[][] DATA, int currlvl)
  10.         {
  11.             if (L != null)
  12.             {
  13.                 int index = 0;
  14.                 while (DATA[index][currlvl] != 0) index++;
  15.                 if (index != 0 && index%2!=0 )
  16.                 {
  17.                     for (int i = 1; i < currlvl; i++)
  18.                     {
  19.                         DATA[index][i] = DATA[index - 1][i];
  20.                     }
  21.                 }
  22.                 DATA[index][currlvl] = (L.VALUE);
  23.                 L.SHOWTREE(DATA, ++currlvl);
  24.                 --currlvl;
  25.             }            
  26.            if(R != null)
  27.            {
  28.                 int index = 0;
  29.                 while (DATA[index][currlvl] != 0) index++;
  30.                 for (int i = 1; i < currlvl; i++)
  31.                 {
  32.                     DATA[index][i] = DATA[index - 1][i];
  33.                 }
  34.                 DATA[index][currlvl] = (R.VALUE);
  35.                 R.SHOWTREE(DATA,++currlvl);
  36.                 --currlvl;
  37.            }                
  38.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement