Дерево двоичного поиска. Найти высоту узла - C#

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

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

Листинг программы
  1. public class BinaryTree
  2. {
  3. public class Node
  4. {
  5. public object inf; //информационное поле
  6. public Node left; //ссылка на левое поддерево
  7. public Node rigth; //ссылка на правое поддерево
  8. //конструктор вложенного класса, создает узел дерева
  9. public Node(object nodeInf)
  10. {
  11. inf = nodeInf;
  12. left = null;
  13. rigth = null;
  14. }
  15. //добавляет узел в дерево так, чтобы дерево оставалось деревом бинарного поиска
  16. public static void Add(ref Node r, object nodeInf)
  17. {
  18. if (r == null)
  19. {
  20. r = new Node(nodeInf);
  21. }
  22. else
  23. {
  24. if (((IComparable)(r.inf)).CompareTo(nodeInf) > 0)
  25. {
  26. Add(ref r.left, nodeInf);
  27. }
  28. else
  29. {
  30. Add(ref r.rigth, nodeInf);
  31. }
  32. }
  33. }
  34. public static void Preorder(Node r) //прямой обход дерева
  35. {
  36. if (r != null)
  37. {
  38. Console.Write("{0} ", r.inf);
  39. Preorder(r.left);
  40. Preorder(r.rigth);
  41. }
  42. }
  43. public int getNodeHeight(Node root, Node x, int height)//вот вроде что-то подобное
  44. {
  45. if (root == null) return 0;
  46. if (root == x) return height;
  47.  
  48. int level = getNodeHeight(root.left, x, height + 1);
  49. if (level != 0) return level;
  50. return getNodeHeight(root.rigth, x, height + 1);
  51. }
  52. }
  53. Node tree; //ссылка на корень дерева
  54. //свойство позволяет получить доступ к значению информационного поля корня дерева
  55. public object Inf
  56. {
  57. set
  58. {
  59. tree.inf = value;
  60. }
  61. get
  62. {
  63. return tree.inf;
  64. }
  65. }
  66. public BinaryTree()
  67. {
  68. tree = null;
  69. }
  70. private BinaryTree(Node r)
  71. {
  72. tree = r;
  73. }
  74. public void Add(object nodeInf) //добавление узла в дерево
  75. {
  76. Node.Add(ref tree, nodeInf);
  77. }
  78. public void GetHeight() //не знаю,как тут реализовать
  79. {
  80. Node tr1 = new Node(Console.ReadLine());
  81.  
  82. }
  83. public void Preorder()
  84. {
  85. Node.Preorder(tree);
  86. }
  87. }
Кто-нибудь....хелп

Решение задачи: «Дерево двоичного поиска. Найти высоту узла»

textual
Листинг программы
  1. public int getNodeHeight()
  2. {
  3.     int leftHeight = this.left == null ? 0 : this.left.getNodeHeight();
  4.     int rightHeight = this.right == null ? 0 : this.right.getNodeHeight();
  5.     return 1 + Math.Max(leftNodeHeight, rightNodeHeight);
  6. }

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


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

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

7   голосов , оценка 3.857 из 5

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

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

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