Определить номер уровня в котором содержится максимальное количество вершин - C#

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

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

В бинарном поисковом дереве необходимо проделать данную операцию. Сделал обход по ширине. Как быть дальше не знаю
   public IEnumerable<int> TraverseLevelOrder()
    {
        if (root == null)
            yield break;
 
        var queue = new Queue<Item>();
        queue.Enqueue(root);
 
        while (queue.Count > 0) {
            var node = queue.Dequeue();
            yield return node.info;
            if (node.lSon != null) queue.Enqueue(node.lSon);
            if (node.rSon != null) queue.Enqueue(node.rSon);
        }
    }

Решение задачи: «Определить номер уровня в котором содержится максимальное количество вершин»

textual
Листинг программы
public int GetWidth()
{
   return GetWidth(root);
}
protected int GetWidth(Item root) 
{
   int level=2, cur = 1, max = 0;  
 
   while(cur > 0)
   {
      cur = GetWidth(root, level++);
      max = Math.Max(cur, max);
   }
   return max;
}
 
private int GetWidth(Item root, int level) 
{
   if (root == null) return 0;
   if (level == 1) return 1;
 
   return GetWidth(root.lSon, level-1) + GetWidth(root.rSon, level-1) ; 
}

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


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

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

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