private static string DisplayLongestPath(Node<int> currentNode, string str) { var stringBuilder = new StringBuilder(str); var pointer = "-->"; stringBuilder.Append(currentNode.Value.ToString()); stringBuilder.Append(pointer); /*for (int i = 0; i < currentNode.Children.Count; i++) { Node<int> child = currentNode.Children[i]; stringBuilder.Append(child.Value.ToString()); stringBuilder.Append(pointer); TraverseDFS(child); }*/ foreach(var child in currentNode.Children) { var currentSb = new StringBuilder(stringBuilder.ToString()); currentSb.Append(child.Value.ToString()); //currentSb.Append(pointer); //stringBuilder.Append(currentSb); DisplayLongestPath(child, currentSb.ToString()); } var path = stringBuilder.ToString(); return path; }
/// <summary> /// Метод Remove() удаляет элемент на который указывает node /// после удаления node будет указывать на элемент стоящий перед удалённым /// </summary> public void Remove() { node = node.prev; node.next.next.prev = node; node.next = node.next.next; Count--; }
/// <summary> /// Метод Start() начинает удалять каждый второй элемент в списке, пока в списке не останется 1 элемент /// </summary> public void Start() { while (Count > 1) { node = node.next.next; Remove(); } }
/// <summary> /// Конструктор с параметром инициализирует список длины n /// </summary> /// <param name="n"></param> public CycleIntIncList(int n) { if (n <= 1) throw new ArgumentOutOfRangeException("Длина списка дожна быть больше единицы."); else { Count = n; node = new Node(1); Node p = node; for (int i = 1; i < n; i++) { p.next = new Node(i + 1); p.next.prev = p; p = p.next; } p.next = node; node.prev = p; node = node.prev; } }
public Node(int d) { data = d; next = null; prev = null; }
private static int TraverseDFS(Node<int> currentNode) { if (currentNode == null) { throw new ArgumentNullException("node", "Root is null"); } if (currentNode.Children.Count == 0) { return 0; } var maxPath = 0; foreach (var child in currentNode.Children) { TraverseDFS(child); maxPath++; // or //maxPath = Math.Max(maxPath, TraverseDFS(child)); } //return maxPath + 1; return maxPath; }