Базовое определение обхода inorder:
- Обход левого поддерева, т. Е. Вызов Inorder (left-поддерево)
- Посещение корня.
- Обходправое поддерево, то есть вызов Inorder (правое поддерево)
Давайте рассмотрим пример BST.
Для приведенного выше дерева обход по порядку будет [2,5,6,8,10,13,15,19].По сути, обход Inorder для BST дает нам элементы в порядке возрастания.
Таким образом, в вашем коде во время обхода предыдущий узел сохраняется, чтобы сравнить его с текущим узлом.При сравнении данные текущего узла должны быть строго больше, чем данные предыдущего узла , поскольку обход дает порядок возрастания.Вот почему используется следующее условие:
if (prev != NULL && root->data <= prev->data)
return false;
Если данные текущего узла (root-> data) меньше или равны данным предыдущего узла (prev-> data), то дерево не является BST.