Как правильно расставить метки высот вершин? - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д