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

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

7   голосов , оценка 3.857 из 5
Похожие ответы