Поиск и удаление одинаковых узлов в бинарном дереве - C#
Формулировка задачи:
Здравствуйте! у меня есть бинарное дерево, у которого нужно найти одинаковые узлы, а затем их удалить. Была идея использовать какой-нибудь из обходов для нахождения одинаковых значений, но не знаю как это реализовать...
class Node
{
public int data;
public Node left, right;
}
class Tree
{
Node root;
public Tree()
{
root = null;
}
public Node ReturnRoot()
{
return root;
}
public void Insert(int id)
{
Node newNode = new Node();
newNode.data = id;
if (root == null)
root = newNode;
else
{
Node current = root;
Node parent;
while (true)
{
parent = current;
if (id <= current.data)
{
current = current.left;
if (current == null)
{
parent.left = newNode;
return;
}
}
else
{
current = current.right;
if (current == null)
{
parent.right = newNode;
return;
}
}
}
}
}Решение задачи: «Поиск и удаление одинаковых узлов в бинарном дереве»
textual
Листинг программы
void RemoveDuplicates(Node current)
{
Node duplicate;
while ((duplicate = Find(current.Left, current.Value)) != null)
Delete(duplicate);
RemoveDuplicates(current.Left);
RemoveDuplicates(current.Right);
}