Esempio n. 1
0
 /// <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);
         }
     }
 }
Esempio n. 2
0
        /// <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));
        }