Node lt; T gt; Scan (string Search)//Обхід (пошук)
{
{ lt; Node lt; T gt; gt; Stack=new Stack lt; Node lt; T gt; gt; (); lt; T gt; Data=this; Stop=false; (Data!=Null)//Якщо корінь не порожній
{. Push (Data); (Stack. Count gt; 0)
{= Stack. Pop (); (Stop!=True)
{(Data. Left!=null amp; amp; (Data. Left. Value as Notebook) .CompareTo (Search) == 0)
{Data;
} if (Data. Right!=null amp; amp; (Data. Right. Value as Notebook) .CompareTo (Search) == 0)
{Data;
} if (Data!=null amp; amp; (Data. Value as Notebook) .CompareTo (Search) == 0)
{Data;
} if (Data. Left!=null amp; amp; Data. Right!=null)
{. Push (Data. Right) ;;// Зробити поточним лівого сина
} if (Data. Left!=null amp; amp; Data. Right == null)
{
Data-;// Зробити поточним лівого сина
} if (Data. Left == null amp; amp; Data. Right!=null)
{. Push (Data. Right);=true;
}
{= true;
}
} (Stack. Count gt; 0)
{= false;
}
}//while (Stop)
}//if (Якщо коріння не порожній)
else//Пошук стався невдало
{
throw new Exception («Відсутня корінь дерева»);
}
} (Exception error)
{. Show (error. Message + « nНажміте ОК щоб продовжити», «Помилка обходу дерева», MessageBoxButtons.OK, MessageBoxIcon. Error);
}
return null;// Повернути пусте значення, тому пошук стався невдало
}
void Sub (string Search, string New)//Заміна
{(Scan (Search)!=null)
{ lt; T gt; Data=Scan (Search);
(Data. Value as Notebook) .FIO_OutPut=New;=new StreamReader (Path, Encoding. Default); str;=Read. ReadToEnd ();
//str=str. Replace (Search, New); Regular=new Regex (Search);=Regular. Replace (str, New) ;. Close (); Write=new StreamWriter (Path, false, Encoding. Default) ;. Write (str) ;. Close ();
}
{. Show («Даного контактної особи не існує», «Помилка зміни», MessageBoxButtons.OK, MessageBoxIcon. Error);
}
}
void Removal (string Search)
{
{(Scan (Search)!=null)
{ lt; T gt; Data=Scan (Search); (Data. Left == null amp; amp; Data. Right == null)//ВИПАДОК 1: Відсутні обидва сини (у видаляється елемента)
{(Data. Parent. Left!=null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Left. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми лівий син?
{. Parent. Left=null;
} if (Data. Parent. Right!=null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Right. Value) == 0)//Визначаємо, для (видаляється елемента) батька ми правий син?
{. Parent. Right=null;
}. Value=default (T);=null;
} if (Data. Left!=null amp; amp; Data. Right == null)//ВИПАДОК 2: Є тільки лівий син (у видаляється елемента)
{ lt; T gt; Stock=Data. Left;// Stock - запас. Left=null;// Видалення зв'язку між батьком (поточним вузлом) і лівим сином
if (Data. Parent!=null)
{. Parent=Data. Parent; (Data. Parent. Left!=Null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Left. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми лівий син ?
{. Parent. Left=Stock;
} if (Data. Parent. Right!=null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Right. Value) == 0)//Визначаємо, для (видаляється елемента) батька ми правий син?
{. Parent. Right=Stock;
}=null;// Очищення пам'яті
}
{. Value=Stock. Value;
}
} if (Data. Left == null amp; amp; Data. Right!=null)//ВИПАДОК 2.1: Є тільки правий син (у видаляється елемента)
{ lt; T gt; Stock=Data. Right;// Stock - запа...