Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Метод записывает в массив-массивов DATA все пути обхода к листьям дерева, data[0..K][0..N] K - кол-во листьев N - путь
- //Описание алгоритма:
- //При каждом добавлении эл-та в массив ему ищется "место" среди массивов путей(первый попавшийся==0)
- //Это выполняется в цикле while
- //Условие if на index проверяет, нужно ли элементу перезаписать предыдущие значения , до currlvl в текущий массив
- //По дерево видно, что эл-ты, кратные 2 в этом не нуждаются (и нулевой элемент тоже, ему не от куда брать данные)
- //currlvl - счётчик рекурсии, показывает, на каком уровне дерева в данный шаг рекурсии мы находимся (корень считается 0 уровнем!)
- //Метод необходимо запускать от корня дерева, положив currlvl = 1
- public void GetPath(Double[][] DATA, int currlvl)
- {
- if (L != null)
- {
- int index = 0;
- while (DATA[index][currlvl] != 0) index++;
- if (index != 0 && index%2!=0 )
- {
- for (int i = 1; i < currlvl; i++)
- {
- DATA[index][i] = DATA[index - 1][i];
- }
- }
- DATA[index][currlvl] = (L.VALUE);
- L.SHOWTREE(DATA, ++currlvl);
- --currlvl;
- }
- if(R != null)
- {
- int index = 0;
- while (DATA[index][currlvl] != 0) index++;
- for (int i = 1; i < currlvl; i++)
- {
- DATA[index][i] = DATA[index - 1][i];
- }
- DATA[index][currlvl] = (R.VALUE);
- R.SHOWTREE(DATA,++currlvl);
- --currlvl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement