Поиск и удаление одинаковых узлов в бинарном дереве - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! у меня есть бинарное дерево, у которого нужно найти одинаковые узлы, а затем их удалить. Была идея использовать какой-нибудь из обходов для нахождения одинаковых значений, но не знаю как это реализовать...
Листинг программы
  1. class Node
  2. {
  3. public int data;
  4. public Node left, right;
  5. }
  6. class Tree
  7. {
  8. Node root;
  9. public Tree()
  10. {
  11. root = null;
  12. }
  13. public Node ReturnRoot()
  14. {
  15. return root;
  16. }
  17. public void Insert(int id)
  18. {
  19. Node newNode = new Node();
  20. newNode.data = id;
  21. if (root == null)
  22. root = newNode;
  23. else
  24. {
  25. Node current = root;
  26. Node parent;
  27. while (true)
  28. {
  29. parent = current;
  30. if (id <= current.data)
  31. {
  32. current = current.left;
  33. if (current == null)
  34. {
  35. parent.left = newNode;
  36. return;
  37. }
  38. }
  39. else
  40. {
  41. current = current.right;
  42. if (current == null)
  43. {
  44. parent.right = newNode;
  45. return;
  46. }
  47. }
  48. }
  49. }
  50. }

Решение задачи: «Поиск и удаление одинаковых узлов в бинарном дереве»

textual
Листинг программы
  1. void RemoveDuplicates(Node current)
  2. {
  3.       Node duplicate;
  4.       while ((duplicate = Find(current.Left, current.Value)) != null)
  5.          Delete(duplicate);
  6.  
  7.       RemoveDuplicates(current.Left);
  8.       RemoveDuplicates(current.Right);
  9. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы