Поиск в ширину в двоичном бинарном дереве - C#
Формулировка задачи:
Ребят привет. У меня есть класс двоичного бинарного дерева, представленный как связь узлов. Помогите написать алгоритм поиска в ширину(breadth-first search) через очередь и функцию подсчитывающую высоту дерева...
Листинг программы
- class Uzel<TNode> : IComparable<TNode> where TNode : IComparable<TNode>
- {
- public Uzel<TNode> Left { get; set; }
- public Uzel<TNode> Right { get; set; }
- public TNode Value { get; private set; }
- public Uzel(TNode value)
- {
- Value = value;
- }
- public int CompareTo(TNode other)
- {
- return Value.CompareTo(other);
- }
- public int CompareNode(Uzel<TNode> other)
- {
- return Value.CompareTo(other.Value);
- }
- }
- public class Tree<T> : IEnumerable<T> where T : IComparable<T>
- {
- private Uzel<T> top;
- }
Решение задачи: «Поиск в ширину в двоичном бинарном дереве»
textual
Листинг программы
- public IEnumerator<T> BFS()
- {
- if (top == null)
- yield break;
- Queue<Uzel<T>> queue = new Queue<Uzel<T>>();
- Uzel<T> current = top;
- queue.Enqueue(current);
- while (queue.Count != 0)
- {
- Uzel<T> index = queue.Dequeue();
- Console.WriteLine(index);
- yield return current.Value;
- if (current.Left != null)
- {
- queue.Enqueue(current.Left);
- }
- if (current.Right != null)
- {
- queue.Enqueue(current.Right);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д