Как правильно расставить метки высот вершин? - C#

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

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

Мне нужно каждой высоте поставить в соответствии два числа(1- высота левого поддерева, 2 - высота правого) Написал код, но он не всегда расставляет правильно
 
/*private int Height(Item p)
        {
            if (p == null)
                return 0;
            int left, right;
            if (p.lSon != null)
                left = Height(p.lSon);
            else
                left = -1;
            if (p.rSon != null)
                right = Height(p.rSon);
            else
                right = -1;
            int max = left > right ? left : right;
            return max +1;
        }*/
       
        private int FindLeftHeight(Item p)
        {
            int left;
            if (p == null)
                return 0;
            if (p.lSon != null)
                left = FindLeftHeight(p.lSon);
            else
                left = -1;
            return left + 1;
        }
 
        private int FindRightHeight(Item p)
        {
            int right;
            if (p == null)
                return 0;
            if (p.rSon != null)
                right = FindRightHeight(p.rSon);
            else
                right = -1;
            return right + 1;
        }

Решение задачи: «Как правильно расставить метки высот вершин?»

textual
Листинг программы
public class NodeTree
{
   public float ValueReal {set; get;}
   public int IDnode {set; get;}
 
   public NodeTree Lnode { set; get; }
   public NodeTree Rnode { set; get; }
 
 
   public NodeTree(float valueReal)
   {
         ValueReal = valueReal;
         IDnode = 0;
   }
}
 
public void F(NodeTree node)
{
    if (node == null) { return; }
 
    var Lval = node.Lnode != null ? 1 : 0;
    var Rval = node.Rnode != null ? 1 : 0;
 
}

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


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

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

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