с. Right=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)//ВИПАДОК 3: Є обидва сини (у видаляється елемента)
{ lt; T gt; Data2=Top (Data. Left);// Data2 - максимальний елемент з лівого піддерева
if (Data2. Left == null amp; amp; Data2. Right == null)//Якщо Data2 (максимальний з лівого піддерева) не має синів
{
if (Data. Parent!=null)//Якщо видаляється елемент не корінний
{(Data2. Parent. Left!=null amp; amp; (Data2. Value as Notebook) .CompareTo (Data2. Parent. Left. Value) == 0)//Визначаємо, для батька ми лівий син?
{
Data2. Parent. Left=null;
} if (Data2. Parent. Right!=null amp; amp; (Data2. Value as Notebook) .CompareTo (Data2. Parent. Right. Value) == 0)//Визначаємо, для батька ми правий син?
{
Data2. Parent. Right=null;
}. Parent=Data. Parent; (Data. Parent. Left!=Null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Left. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми лівий син ?
{. Parent. Left. Value=Data2. Value;
} if (Data. Parent. Right!=null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Right. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми правий син?
{. Parent. Right. Value=Data2. Value;
}
Data=null;
}
else//Значить видаляється елемент - це корінь
{. Value=Data2. Value; (Data2. Parent. Left!=Null amp; amp; (Data2. Value as Notebook) .CompareTo (Data2. Parent. Left. Value) == 0)//Визначаємо, для батька ми лівий син?
{
Data2. Parent. Left=null;
} if (Data2. Parent. Right!=null amp; amp; (Data2. Value as Notebook) .CompareTo (Data2. Parent. Right. Value) == 0)//Визначаємо, для батька ми правий син?
{
Data2. Parent. Right=null;
}
}
} if (Data2. Left!=null)//Якщо Data2 (максимальний з лівого піддерева) має лівого сина
{ lt; T gt; Stock=Data2. Left;// Stock - запас2. Left=null;// Видалення зв'язку між батьком (поточним вузлом) і лівим сином
Data2. Parent. Right=Stock ;. Parent=Data2. Parent; (Data. Parent!=Null)//Якщо видаляється елемент не корінний
{. Parent=Data. Parent; (Data. Parent. Left!=Null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Left. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми лівий син ?
{. Parent. Left. Value=Data2. Value;
} if (Data. Parent. Right!=null amp; amp; (Data. Value as Notebook) .CompareTo (Data. Parent. Right. Value) == 0)//Визначаємо, для батька (видаляється елемента) ми правий син?
{. Parent. Right. Value=Data2. Value;
}
Data=null;
}
else//Значить видаляється елемент - це корінь
{
Data. Value=Data2. Value;
}
}
}
else//Була виявлена ??помилка в дереві (тому що не один з критеріїв не підходить)
{
throw new Exception («Дерево побудований з помилкою»);
}
}
else
{
MessageBox. Show («Даного контактної особи не існує», «Помилка видалення», MessageBoxButtons.OK, MessageBoxIcon. Error);
}
}