/// <summary> /// Находит и возвращает первый узел который содержит искомое значение. /// Если значение не найдено, возвращает null. /// Так же возвращает родительский узел. /// </summary> /// /// <param name="value">Значение поиска</param> /// <param name="parent">Родительский элемент для найденного значения/// </param> /// <returns> Найденный узел (или ноль) /// </returns> private AVLTreeNode <T> Find(T value) { AVLTreeNode <T> current = Head; // помещаем текущий элемент в корень дерева // Пока текщий узел на пустой while (current != null) { int result = current.CompareTo(value); // сравнение значения текущего элемента с искомым значением if (result > 0) { // Если значение меньшне текущего - переход влево current = current.Left; } else if (result < 0) { // Если значение больше текщего - переход вправо current = current.Right; } else { // Элемент найден break; } } return(current); }
private AVLTreeNode <T> Find(T value) { AVLTreeNode <T> current = Head; // помещаем текущий элемент в корень дерева while (current != null) { int result = current.CompareTo(value); if (result > 0) { current = current.Left; } else if (result < 0) { current = current.Right; } else { break; } } return(current); }