AVL Binary Heap (тест Balanace)

Я пытаюсь выполнить тестирование, если дерево является деревом AVL или не использует пролог.

Я провел тест на высоту, который подходит для тех тестов, которые я провел до сих пор, но мой тест на балансировку все еще не проходит успешно.

Это моя работа до сих пор:

avl('Branch'(LeftBranch,RightBranch)) :-
  height(LeftBranch,H1),
  height(RightBranch,H2),
  abs(H1-H2) =< 1.

Этот код основан на более раннем коде стека-потока. Но это не работает во всех случаях. Будет включать мой код высоты. Где-то я допустил ошибку и уверен, где ее найти.

height(leaf(_),1).
height('Branch'(LeftBranch,RightBranch,H) :-
  height(LeftBranch,H1),
  height(RightBranch,H2),
  H is max(H1,H2)+1.

Почему мой код не оценивает некоторые деревья?

Пролог - сбалансированное дерево или нет

Это была нить, на которой я основал свой тест дерева баланасов, и я попробовал его с деревом, которое он опубликовал в комментариях, но у меня не получилось, есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос