Идея этого кода заключается в следующем:
Предполагая, что дерево отсортировано в двоичном виде, мы можем проверить, находятся ли элементы a
и b
на другой стороне текущего узла (еслимы нашли нашу lca).
В двоичном дереве для каждого узла больший элемент направлен вправо, а маленький - влево.Таким образом, если a
меньше от текущего узла, а b больше, это означает, что они с другой стороны -> lca.
ptr->key
обращается к данным в узле.
Когда первый оператор if
завершается неудачно, это означает, что и a, и b находятся с одной и той же стороны -> следующие 2, если оператор выбирает, продолжать поиск вправо или влево (на b меньше, чем текущий узел как на левой стороне, так и еслибольше, чем ток на правой стороне)
Обратите внимание этот код предполагает, что a меньше, чем b.