Дерево двоичного поиска. Найти высоту узла - C#
Формулировка задачи:
Листинг программы
- public class BinaryTree
- {
- public class Node
- {
- public object inf; //информационное поле
- public Node left; //ссылка на левое поддерево
- public Node rigth; //ссылка на правое поддерево
- //конструктор вложенного класса, создает узел дерева
- public Node(object nodeInf)
- {
- inf = nodeInf;
- left = null;
- rigth = null;
- }
- //добавляет узел в дерево так, чтобы дерево оставалось деревом бинарного поиска
- public static void Add(ref Node r, object nodeInf)
- {
- if (r == null)
- {
- r = new Node(nodeInf);
- }
- else
- {
- if (((IComparable)(r.inf)).CompareTo(nodeInf) > 0)
- {
- Add(ref r.left, nodeInf);
- }
- else
- {
- Add(ref r.rigth, nodeInf);
- }
- }
- }
- public static void Preorder(Node r) //прямой обход дерева
- {
- if (r != null)
- {
- Console.Write("{0} ", r.inf);
- Preorder(r.left);
- Preorder(r.rigth);
- }
- }
- public int getNodeHeight(Node root, Node x, int height)//вот вроде что-то подобное
- {
- if (root == null) return 0;
- if (root == x) return height;
- int level = getNodeHeight(root.left, x, height + 1);
- if (level != 0) return level;
- return getNodeHeight(root.rigth, x, height + 1);
- }
- }
- Node tree; //ссылка на корень дерева
- //свойство позволяет получить доступ к значению информационного поля корня дерева
- public object Inf
- {
- set
- {
- tree.inf = value;
- }
- get
- {
- return tree.inf;
- }
- }
- public BinaryTree()
- {
- tree = null;
- }
- private BinaryTree(Node r)
- {
- tree = r;
- }
- public void Add(object nodeInf) //добавление узла в дерево
- {
- Node.Add(ref tree, nodeInf);
- }
- public void GetHeight() //не знаю,как тут реализовать
- {
- Node tr1 = new Node(Console.ReadLine());
- }
- public void Preorder()
- {
- Node.Preorder(tree);
- }
- }
Кто-нибудь....хелп
Решение задачи: «Дерево двоичного поиска. Найти высоту узла»
textual
Листинг программы
- public int getNodeHeight()
- {
- int leftHeight = this.left == null ? 0 : this.left.getNodeHeight();
- int rightHeight = this.right == null ? 0 : this.right.getNodeHeight();
- return 1 + Math.Max(leftNodeHeight, rightNodeHeight);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д