Поиск и удаление одинаковых узлов в бинарном дереве - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д