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