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

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

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

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

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

textual
Листинг программы
  1. public int GetWidth()
  2. {
  3.    return GetWidth(root);
  4. }
  5. protected int GetWidth(Item root)
  6. {
  7.    int level=2, cur = 1, max = 0;  
  8.  
  9.    while(cur > 0)
  10.    {
  11.       cur = GetWidth(root, level++);
  12.       max = Math.Max(cur, max);
  13.    }
  14.    return max;
  15. }
  16.  
  17. private int GetWidth(Item root, int level)
  18. {
  19.    if (root == null) return 0;
  20.    if (level == 1) return 1;
  21.  
  22.    return GetWidth(root.lSon, level-1) + GetWidth(root.rSon, level-1) ;
  23. }

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


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

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

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы