давайте создадим функцию для поиска узла…

Эта функция принимает параметр, который мы собирались искать.

создавая бесконечный цикл, мы можем выполнять процесс поиска, пока не найдем правильный узел

while (true) {

// тело

}

мы устанавливаем current в корень в начале, поэтому он начинает соответствие введенному параметру, проверяя его самостоятельно из корня.

если мы нашли элемент данных, который мы вводим. он возвращает текущий узел, на который уже указали.

Назовем эту функцию findNode (35); что является наихудшим случаем.

на первой итерации current находится в корне и проверяет корневые данные , который имеет значение не нуль, и он выполняет второй оператор if, проверяет условие и проверяет корневые данные, если они равны 45 или нет. условие - false.

Затем выполняет условие else if, которое возвращает true и устанавливает текущий своему левому дочернему

затем выполняется вторая итерация и проверяются первые два условия if, которые являются ложными.

и переходит к else if, который также является false, и выполняет else , которое является истинным.

затем установите текущий на правый дочерний элемент его. И начинаем третью итерацию и проверяем условия первого If, которое является ложным, и проверяем второе if, которое равно true, и установите return текущий узел.

вам может быть интересно, какова работа первого условия if, которое бесполезно - - - - - - - - - → пока оно бесполезно, но давайте рассмотрим, что наше значение, переданное в findNode, равно 37, которого нет в дереве.

на последнем шаге выше он не может найти данные, поэтому он проверяет условия if и устанавливает ток в нулевой узел, предполагая, что он находится в правой части узла, который содержит значение 35, и вызывает while для повторной итерации. там только первое условие if играет свою роль и возвращает ноль, так как 37 не находится в двоичном дереве.