/// <summary> /// рекурсивное добавления элементов /// </summary> /// <param name="item"></param> /// <param name="compare"></param> public void AddRecurs(TreeSort item, ref int compare) { if (item.Data < Data) //если дата входящего элемента меньше, чем дефолт дата (0) { compare++; //сравнение, т.к. item.Data < Data if (Left == null) //если слева пусто, то { Left = item; //лево - наш элемент } else //иначе рекурсивный вызов { Left.AddRecurs(item, ref compare); } } else //иначе { compare++; //сравнение, т.к. item.Data < Data if (Right == null) //если справа пусто, то { Right = item; //право - наш элемент } else //иначе рекурсивный вызов { Right.AddRecurs(item, ref compare); } } }
/// <summary> /// Отправка в класc TreeSort /// </summary> /// <param name="array"></param> /// <param name="compare"></param> /// <param name="changes"></param> /// <returns></returns> public static int[] TreeWork(int[] array, ref int compare, ref int changes) { int index = 0; TreeSort tree = new TreeSort(array[0]); for (int i = 1; i < array.Length; i++) { compare++; tree.AddRecurs(new TreeSort(array[i]), ref compare, ref changes); } return(tree.ToMas(ref compare, ref changes, index, ref array)); }