Работа с узлами: поиск определённого потомка - C#
Формулировка задачи:
1. Дописать функцию ContainsChildWithValue, которая определяет,
содержат ли потомки узла (по всей глубине иерархии) указанное значение.
2. Прокомментировать проблемы в коде.
using System; using System.Collections.Generic; namespace Test { class Program { class Node { public IComparable Value { get; set; } public List<Node> Children { get; set; } public bool ContainsChildWithValue(IComparable value) { ???; } } static void Main(string[] args) { Node root = new Node(); root.Children.Add(new Node() { Value = 1 }); root.Children.Add(new Node() { Value = 2 }); bool result = root.ContainsChildWithValue(1); Console.ReadLine(); } } }
Решение задачи: «Работа с узлами: поиск определённого потомка»
textual
Листинг программы
class Node<T> where T : IEquatable<T> { public T Value { get; set; } public List<Node<T>> Children { get; set; } private bool FindChild(Node<T> startNode, T value) { if (startNode.Children == null || startNode.Children.Count == 0) { if (startNode.Value.Equals(value)) return true; } else { foreach (Node<T> node in startNode.Children) { FindChild(node, value); } } return false; } public bool ContainsChildWithValue(T value) { return FindChild(this, value); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д