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