Дерево двоичного поиска. Найти высоту узла - 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);
}